我有一个由四个级别组成的模型层次结构,所有这些都有各种各样的好理由,但我认为这些解释超出了这个问题的范围。
所以这里是伪python:
class Base(models.Model):
...
class Top(models.Model):
base = FK(Base)
class Middle(models.Model):
top = FK(Top)
created_at = DateTime(...)
flag = BooleanField(...)
class Bottom(models.Model):
middle = FK(Middle)
stored_at = DateTime(...)
title = CharField(...)
给定一个标题,如何有效地查找只有最新(stored_at
)中间实例的最新(created_at
)底部实例才能满足该标题的所有Base实例{ {1}}设置为True?
我找不到使用ORM的方法,而且我看到它的方式,flag
对我想要查询的模型对我没用。对于Base模型上的任何便捷方法都是如此。由于我不是SQL专家,我想尽可能地使用ORM以及避免非规范化。
谢谢!
答案 0 :(得分:0)
所以,显然,没有严重陷入(一些非常笨重的)SQL并且没有找到任何替代解决方案,我看到自己不得不诉诸Base
模型上的非规范化字段,就像有效地需要的那样多。获取所述模型的所需(已过滤)查询集。
然后在相应Bottom
实例的创建/修改时间更新这些字段。