【问题标题】:Django: filter foreign keysDjango:过滤外键
【发布时间】:2012-01-23 14:09:12
【问题描述】:

我有以下代码:

        query = Entry.objects.all()
        print 'authors ' + repr([x.id for x in authors])
        print 'query ' + repr(query)
        print 'query ids ' + repr([x.author.id for x in query])
        query.filter(author__in=authors)
        print 'filtered ids ' + repr([x.author.id for x in query])

哪个输出这个:

        authors [2]
        query [<Entry: test>, <Entry: test>]
        query ids [2, 3]
        filtered ids [2, 3]

显然,3 不在 [2] 中。那么,为什么过滤后的 id 是 [2, 3] 而不仅仅是 [2]?

问候

【问题讨论】:

  • 没关系。 .filter() 的分配结果显然更好......

标签: python django model filter django-queryset


【解决方案1】:

试试这个,而不是你当前的过滤器:

query = query.filter(author__in=authors)

【讨论】:

    【解决方案2】:

    当您调用query.filter(author__in=authors) 时,它会返回一个新的查询集。它不会修改现有的查询集。

    如果您将新的查询集分配给查询,那么您将得到您期望的结果。

    query = query.filter(author__in=authors)
    print 'filtered ids ' + repr([x.author.id for x in query])
    

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 1970-01-01
      • 2018-01-05
      • 2013-09-05
      • 2016-07-12
      • 2013-09-04
      • 2021-01-26
      • 2020-12-08
      • 1970-01-01
      相关资源
      最近更新 更多