在Django中选择一组相关的对象

时间:2012-06-05 20:35:13

标签: django django-models

我有两种模式:

class ModelA(models.Model):
    name = models.CharField()

class ModelB(models.Model):
    a = models.ForeignKey(ModelA)
    value = models.CharField()

ModelB始终属于ModelA。我有一个过滤我的ModelB s:

的查询
ModelB.objects.filter(value='foo')

从那个QuerySet我需要检索匹配的ModelA集。所以我尝试了这个:

>>> ModelB.objects.filter(value='foo').values('a')
[{'a': 2}, {'a': 4}, {'a': 6}]

但是正如你所看到的那样,我只得到了对象id。我怎样才能自己获取对象?

2 个答案:

答案 0 :(得分:4)

如果你想要ModelAs,你必须要求ModelAs。

ModelA.objects.filter(modelb__value='foo')

答案 1 :(得分:0)

目前我有这个小号码:

model_a_list = ModelB.objects.filter(value='foo').values('a')
ModelA.objects.filter(id__in=model_a_list)

任何更好的方法都会非常感激。