2016-01-20 58 views
3

我有2种型号如何获取Django中子模型中存在外键的父模型的所有对象?

#models 
class Parent(models.Model): 
    name = models.CharField() 

class Child(models.Model) 
    parentLink = models.ForeignKey(Parent) 
    timeStamp = models.DateTimeField(auto_now_add=True) 

我想有在儿童模型中提到的外键和时间戳字段一些过滤器父模型的所有对象。

我该如何做这反向提取对象?

这是MySQL的将是这样的

SELECT Parent.name FROM Parent JOIN Child on Parent.Id = Child.parentLink WHERE Child.timeStamp > '2016-01-01 : 00.00.00' 
+0

'timeStamp'不是Prent的字段。 – Gocht

+0

@Gocht,对不起,错字。 –

+0

你的意思是,让所有父母属于一个孩子?有些父母不在任何孩子身上? – Gocht

回答

5

如果我知道你需要什么正确的,它应该是这样的:

Parent.objects.filter(
    child__isnull=False, 
    child__timeStamp__gt=datetime.strptime(
     '2016-01-01 00.00.00', 
     '%Y-%m-%d %H.%M.%S' 
    ) 
) 

这将提取所有Parent对象对此有一个时间戳晚于2016/01/01的孩子。

+2

从文档中,[“要引用”反向“关系,只需使用模型的小写名称。”](https://docs.djangoproject.com/en/1.9/topics/db/queries/#lookups -that-span-relationships)我试过了,它起作用(至少在1.9)。 –

+0

在你的链接的例子'Entry'有一个'Blog'字段,这不是这种情况。 – Gocht

+1

检查以下示例。 :) –

相关问题