【问题标题】:How to get all objects of a Parent model of which foreign key exist in child model in Django?如何获取Django中子模型中存在外键的父模型的所有对象?
【发布时间】:2016-04-26 20:33:01
【问题描述】:

我有 2 个模型

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

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

我希望 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'

【问题讨论】:

  • timeStamp 不是 Prent 的字段。
  • @Gocht,抱歉打错了。
  • 你的意思是,得到所有属于孩子的父母?有些父母没有孩子?
  • 是的,所有父母都在孩子身上。每个父母都可能有孩子,也可能没有。
  • @T.Opletal 使用相关的预取,他将获得 Childs。喜欢:Child.objects.filter(timeStamp='some_value').prefetch_related('parentLink'),然后为每个孩子获取父母。

标签: python mysql django django-models foreign-key-relationship


【解决方案1】:

如果我正确理解您的需求,应该是这样的:

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 的子对象。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2020-11-26
  • 2020-04-06
  • 1970-01-01
  • 2011-11-29
  • 2020-11-16
  • 2011-01-15
相关资源
最近更新 更多