同时使用两个django模型管理器

时间:2014-08-08 15:08:49

标签: django django-models django-managers

如果我有以下两种型号:

class A(model.Models):
    name = models.CharField(max_length = 10)

class B(model.Models):
    name = models.CharField(max_length = 10)
    a = models.ForeignKey(A)
    type = models.CharField(max_length = 10)

我想得到这样的A对象:

  1. 它的名字是'testa'
  2. 与其相关的至少一个B对象名称为'testb' 并输入'typeb'
  3. 既然查询涉及两个管理器,即A.objects和A.b_set,我想知道如何一次进行查询。

    我不想要两个查询集的交集,因为其中一个可能大到足以导致性能问题

1 个答案:

答案 0 :(得分:0)

试试这个:

a_queryset = A.objects.filter(name='testa', b__name='testb').distinct()

基本上,型号名称的小写

Documentation here

distinct()消除了任何重复的A个对象