【问题标题】:In Django, how can you get all related objects with a particular User foreign Key在 Django 中,如何获取具有特定用户外键的所有相关对象
【发布时间】:2011-12-21 12:44:01
【问题描述】:

我有这样的事情:

class Video(models.Model):
    user = models.ForeignKey(User, related_name='owner')
    ...

我正在尝试通过执行以下操作来访问特定用户拥有的所有视频:

u = User.objects.get(pk=1)
u.video_set.all()

我收到错误“用户对象没有属性 video_set”

我是不是做错了什么?

【问题讨论】:

    标签: django django-models django-authentication django-related-manager


    【解决方案1】:

    related_name 是从目标模型(在本例中为用户)引用它的名称。您应该调用的设置方式:

    u = User.objects.get(pk=1)
    u.owner.all()
    

    但是,为了清楚起见,您可能应该将相关名称设置为 related_name='video_set' (顺便说一句,这是它的默认名称)。然后你可以打电话给u.video_set.all(),看起来更合乎逻辑。

    【讨论】:

    • 由于他们想要u 拥有的每个Video,我认为他们应该改为通过Video.objects.filter(user__pk=u.pk)
    • @desfido 我的方式应该返回将用户 (u) 设为“用户”的所有视频的集合。原来的“所有者”标签以这种方式具有误导性。你的方法也行,只是工作量更大。
    • 很公平。经过反思,我同意u.video_set.all() 可能更容易返回并解释其意图。
    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 2014-05-08
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    相关资源
    最近更新 更多