Disculpe si mi pregunta resulta ser una tontería, pero soy bastante nuevo en Django y no pude encontrar una respuesta en ningún lado.Modelos de Django: asignar ID en lugar de objeto
tengo el siguiente modelo:
class BlackListEntry(models.Model):
user_banned = models.ForeignKey(auth.models.User,related_name="user_banned")
user_banning = models.ForeignKey(auth.models.User,related_name="user_banning")
Ahora, cuando intento para crear un objeto como éste:
BlackListEntry.objects.create(user_banned=int(user_id),user_banning=int(banning_id))
me sale un error de seguimiento:
Cannot assign "1": "BlackListEntry.user_banned" must be a "User" instance.
De Por supuesto, si lo reemplazo con algo como esto:
user_banned = User.objects.get(pk=user_id)
user_banning = User.objects.get(pk=banning_id)
BlackListEntry.objects.create(user_banned=user_banned,user_banning=user_banning)
todo funciona bien. La pregunta es:
¿Mi solución golpea la base de datos para recuperar ambos usuarios y, en caso afirmativo, es posible evitarla, simplemente al pasar los identificadores?
Esto me da: 'user_banning__id' es un argumento de palabra clave no válido para esta función –
Lo siento, me acabo de dar cuenta de que está creando el objeto. Por lo tanto, debe acceder con un solo guion bajo. Editaré mi respuesta para explicar por qué. – Francisco
Gracias, ahora funciona. Te agregaría +1, pero estoy demasiado listo para hacerlo todavía. –