【问题标题】:How to make Q queries with models with foreign keys?如何使用具有外键的模型进行 Q 查询?
【发布时间】:2013-10-10 12:28:46
【问题描述】:

我的模型是这样定义的:

class Model2(models.Model):
    id = models.IntegerField(primary_key=True)
    name = ...

class Model1(models.Model):
    id = models.IntegerField(primary_key=True)
    model2 = models.ForeignKey(Model2, to_field='id', db_column='model2')

问题是我不知道如何使用 queryset 进行 OR 查询。

qs = Model1.objects.filter(Q(model2.id__icontains=search) | Q(id__icontains=search))

我明白了

关键字不能是表达式

所以问题是如何在 Q 查询中引用相关模型的字段?谢谢

【问题讨论】:

    标签: django django-models django-q


    【解决方案1】:

    这应该可行:

    qs = Model1.objects.filter(Q(model2__id=search) | Q(id=search))
    

    如果你正在寻找id__icontains,我会重新审视实现

    如果您搜索 1,那么它会查找 111121166...,(其中包含 1 的任何 id)这可能不是您想要的。

    要特别指出你的错误,

    Q(model2.id__icontains=search)
    

    应该是

    Q(model2__id__icontains=search)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2020-12-20
      • 2012-09-11
      • 2013-02-27
      • 2021-12-27
      相关资源
      最近更新 更多