Django过滤与用户组具有一对一关系的项目

fra*_*ous 3 sql django

在 Django 中,如果我有一个模型,例如一个与包含用户的(Django Auth)组相关的 OneToOne 建筑物,我如何找到用户所属的所有建筑物(也许这些是用户工作的所有建筑物)?Building 与 Group 是一对一的,因此 building 有一个名为“group”的组外键字段。

我试过了

Building.objects.filter(group__contains=user)
Building.objects.filter(group_user_set__contains=user)
Run Code Online (Sandbox Code Playgroud)

当应该有比赛时,我却没有得到比赛。

Bul*_*ula 6

Usingcontains不是正确的选择,因为它搜索不在集合内的字段(字符串)内的表达式。尝试使用:

Buildings.objects.filter(group__user=user)
Run Code Online (Sandbox Code Playgroud)

  • 来自 [django 文档](https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships):*'要引用“反向”关系,只需使用模型的小写名称。'* (2认同)

Gar*_*rns 0

如果是一对一的关系,为什么不直接返回组呢?

result = []
u = User.objects.get(your user here)
for group in u.groups.all():
    result.append(group.whateverYourForeignKeyFieldIsCalled)
return result
Run Code Online (Sandbox Code Playgroud)