Django排除了一个没有values()关键字的查询集



我有几个型号,但我的问题是关于其中两个,a和B。

class A(models.Model):
    ...
class B(models.Model):
    a = models.ForeignKey(A)
    c = models.CharField(...)
    d = models.ForeignKey(C)

我只想排除这个查询集:

set1 = B.objects.all()

来自以下查询集:

set2 = A.objects.all()

我知道我可以通过以下方式来管理:

set1 = B.objects.all().values('a')
set2 = A.objects.all().exclude(pk__in = set1)

但是,对于剩余的代码,我需要set1的所有值。如果我使用values((,我就不能使用set1的"c"one_answers"d"字段。

那么,有没有任何方法可以在不缩小B的域的情况下排除?

附言:我更喜欢避开新的查询。我知道我可以编写B对象的第二个查询来满足我的需求。

我相信您是在询问没有相关B的模型A的实例。

set2 = A.objects.filter(b__isnull=True)

是的,您可以使用列表理解:

[obj.a for obj in queryset]

这将为查询集中的所有对象返回一个具有a属性的列表,而不修改它们。

相关内容

  • 没有找到相关文章

最新更新