template - inclusion tags django
El objeto ''RelatedManager'' no tiene atributo (2)
Cuando accede a user.details
, accede a la referencia inversa de la clave foránea UserDetail.user
. La propia clave foránea no especifica que un User
solo pueda tener un UserDetail
, por lo que django le ofrece un RelatedManager
, que puede filtrar y consultar como un Manager
normal. Así que le haces lo mismo que a tus administradores de .objects
. Puede solicitar user.details.all()
, user.details.filter()
, user.details.get()
, etc., que le brindarán un queryset, un objeto o una excepción, según el Método y los resultados.
Tengo un modelo definido como este:
class UserDetail(models.Model):
user = models.ForeignKey(User, db_index=True, unique=True, related_name=''details'')
favourites = models.ManyToManyField(Article, related_name=''favourited_by'', blank=True)
Y estoy tratando de hacer algo como esto:
article = get_object_or_404(Article, pk=id)
request.user.details.favourites.add(article)
¿Por qué no está funcionando?
Estoy recibiendo este error:
El objeto ''RelatedManager'' no tiene atributo ''favoritos''
Supongo que los details
no son del tipo correcto, pero ¿por qué no? ¿Y cómo puedo realizar una consulta como esa?
Tratar
request.user.details.get().favourites.add(article)
Esto supone que el objeto UserDetail ya existe para ese usuario, de lo contrario, get()
generará una excepción.