es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La clave foránea de Peewee no es un entero.

Intento comparar dos enteros pero el valor de ForeignKey no es un entero:

class Player(Model):

    id = IntegerField(primary_key=True)
    first_name = CharField(max_length=32)

    class Meta:
        database = db
        db_table = "player"


class Club(Model):
    id = IntegerField(primary_key=True)
    owner = ForeignKeyField(Player, backref='owner')
    class Meta:
       database = db
       db_table = "club"

Ahora intento comparar el valor actual de session["id"] con el propietario de la base de datos:

club_data = Club.get(Club.id == id)
if session["id"] == club_data.owner:
    do_some_things()

El valor club_data.owner no es un entero. ¿He cometido un error en el archivo de la base de datos?

Cuando intento int(club_data.owner), obtengo el siguiente mensaje de error:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Player'

print(club_data.owner) es 0 y session["id"] también es 0

¿Dónde cometí un error?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error está en intentar comparar session[“id”] (que se asume que es un entero) con club_data.owner (que es un objeto Player). Para comparar los ids, puedes acceder al atributo id del objeto Player de la siguiente manera:

    if session["id"] == club_data.owner.id:
        realizar_algunas_cosas()
    

    De esta forma, se compararán correctamente los dos ids enteros.

Comments are closed.