【问题标题】:Django Foreignkey reverse access when parent model has multiple Foreignkeys [duplicate]父模型具有多个外键时的Django外键反向访问[重复]
【发布时间】:2020-06-22 09:13:02
【问题描述】:

我使用标准的 Django 用户模型并编写了这个自定义模型:

class Messages(models.Model):
    sender = models.ForeignKey(User, related_name="sender", on_delete=models.CASCADE)
    receiver = models.ForeignKey(User, related_name="receiver", on_delete=models.CASCADE)
    content = models.TextField()
    date = models.DateTimeField(default=timezone.now)

现在,给定一个用户对象user,我想访问他发送或接收的所有消息。我试过:user.messages_set.all(),但我收到以下错误:'User' object has no attribute 'messages_set'。 我该如何解决这个问题?

感谢您的回答!

【问题讨论】:

标签: python django django-models


【解决方案1】:

因为你定义了related_name='sender'。如果使用相关名称,则必须将其用于向后查询。您可以使用此代码访问您的使用消息:

user.sender.all()

您可以使用有关related_name here的更多详细信息

【讨论】:

  • 有没有办法获得一个包含所有对象的查询集,用户是发送者还是接收者?使用向后访问?
  • 如果你想得到一个用户的消息,他可以是接收者或发送者,你可以使用这个查询:Messages.objects.filter(Q(sender=user)|Q(receiver=user) )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2020-12-23
  • 1970-01-01
  • 2014-04-27
  • 2021-10-31
  • 2015-12-21
相关资源
最近更新 更多