在 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)
当应该有比赛时,我却没有得到比赛。
Usingcontains不是正确的选择,因为它搜索不在集合内的字段(字符串)内的表达式。尝试使用:
Buildings.objects.filter(group__user=user)
Run Code Online (Sandbox Code Playgroud)
如果是一对一的关系,为什么不直接返回组呢?
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)