【问题标题】:Django Filter items with OneToOne relationship to Group of Users与用户组具有 OneToOne 关系的 Django 过滤项目
【发布时间】:2013-01-10 07:41:24
【问题描述】:

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

我试过了

Building.objects.filter(group__contains=user)
Building.objects.filter(group_user_set__contains=user)

当应该有匹配时,我没有得到匹配。

【问题讨论】:

    标签: sql django


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      Buildings.objects.filter(group__user=user)
      

      【讨论】:

      • 行得通!既然一个组包含多个用户,那么它怎么会有一个“用户”字段呢?
      • 来自django documentation'要引用“反向”关系,只需使用模型的小写名称即可。'
      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 2021-01-04
      • 2020-07-08
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多