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

Pra*_*are 3 python mysql django django-models foreign-key-relationship

我有2个型号

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

class Child(models.Model)
     parentLink = models.ForeignKey(Parent)
     timeStamp = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

我希望Parent模型的所有对象都具有Child模型中提到的外键和timeStamp字段中的一些过滤器.

如何反向获取对象?

它的MySQL就是这样的

SELECT Parent.name FROM Parent JOIN Child on Parent.Id = Child.parentLink WHERE Child.timeStamp > '2016-01-01 : 00.00.00'
Run Code Online (Sandbox Code Playgroud)

Jon*_*vis 5

如果我理解你需要什么,它应该是这样的:

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

这将获取Parent有时间戳超过2016/01/01的子节点的所有对象.

  • 从文档中,["引用"反向"关系,只需使用模型的小写名称."](https://docs.djangoproject.com/en/1.9/topics/db/queries/#lookups-那个跨度关系)我试过它并且它起作用(至少1.9). (2认同)