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?
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:
De esta forma, se compararán correctamente los dos ids enteros.