【问题标题】:How can I filter instances of a model in django, with a queryset value of filter field?如何使用过滤器字段的查询集值过滤 django 中模型的实例?
【发布时间】:2015-09-06 06:37:44
【问题描述】:

我正在django中创建一个应用程序,我有下一个问题:

我想通过字段 att1 对 modelA 的对象进行归档,并且我有字段 att1 的值的查询集。我的意思是,我的模型是:

class modelA(models.Model):
    att1 = models.ForeignKey(modelB)
    ...

class modelB(models.Model):
    ...

我有一个modelB对象的查询集,我想获取modelA的所有对象,它的值为att1,modelB的查询集的任何值。

我该怎么做?

非常感谢!

【问题讨论】:

    标签: python django filter


    【解决方案1】:

    没有魔法

    ModelA.objects.filter(att1=queryset of modelB)
    

    【讨论】:

    • 试试ModelA.objects.filter(att1__in=queryset of modelB)
    • 我的 att1 查询集包含 [{'age': 2}]
    • 那你为什么不使用__关系作为forienkeys呢?我的意思是ModelA.objects.filter(att1__age=2
    • 好吧,我明白了。谢谢
    【解决方案2】:

    假设你有对象 B 的字段 att2 和 att3

    class modelA(models.Model):
        att1 = models.ForeignKey(modelB)
    
    
    class modelB(models.Model):
       att2 = models.CharField(max_length=255)
       att3 = models.CharField(max_length=255)
    

    然后您通过执行以下操作进行过滤: 结果 = modelA.objects.filter(att1__att2='foo')

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 2013-10-10
      • 2018-10-28
      • 2018-05-27
      • 1970-01-01
      • 2017-01-24
      • 2020-03-19
      • 1970-01-01
      • 2018-09-02
      相关资源
      最近更新 更多