django中关于相关对象的复杂模型查询

时间:2014-08-10 02:37:36

标签: python django django-models

假设我有以下两种模式:

class A(models.Model):
    name = models.CharField(max_length = 20)
    type = models.CharField(max_length = 20)
class B(models.Model):
    name = models.CharField(max_length = 20)
    type = models.CharField(max_length = 20)
    a = models.ForeinKey(A)

我想要这样的A实例:

  1. 其名称为'name_a',其类型为'type_a'
  2. 它至少有一个与之相关的B对象,其名称为“name_b”,其类型为“type_b”
  3. 有没有办法一次获得这样的A个实例?

1 个答案:

答案 0 :(得分:2)

您可以使用filter,如下所示:

A.objects.filter(name='name_a', type='type_a',
                 b__name='name_b', b__type='type_b').distinct()

更新添加了distinct以防止重复的对象。