在Django中使用反向关系过滤查询集

时间:2015-06-06 06:24:52

标签: python django

如果我有两个型号

class ModelA(models.Model):
    pass

class ModelB(models.Model):
    model_a = models.ForeignKey(ModelA, related_name="children")
    status = models.IntegerField()
    date = models.DateTimeField()

我可以使用ModelA.objects.children.latest('date')获取最新的ModelB对象,但是我还可以针对最新ModelB对象中的字段过滤我的ModelA查询集吗?我的意思是

ModelA.objects.filter(ModelA.objects.children.latest('date')['status']=1)

ModelA.objects.filter(latest_children__status=1)

我知道这段代码不会起作用,但我希望它能说明我想要的东西。

2 个答案:

答案 0 :(得分:0)

你可以这样做

null

首先过滤对象然后获取最新信息。

答案 1 :(得分:0)

不确定这是否可行,但请试一试。

ModelA.objects.filter(children__status=1)\
    .annotate(last_date=Max('children__date'))\
    .filter(children__date=F('last_date'))