我想创建一个“What's New”部分,其中列出了最后一天的所有数据库更改。我在模型中添加了“更新”字段:
class Film(models.Model):
.
.
.
updated = models.DateTimeField(auto_now=True)
class Actor(models.Model):
.
.
.
updated = models.DateTimeField(auto_now=True)
现在,我想查询所有模型,以获取最新更改的日期排序列表。如何在多个模型中查询“更新”字段?这是实现主要目的的最有效方式吗?
如果我想更具体并列出每个模型中更改的实际字段,该怎么办?
答案 0 :(得分:3)
我不知道在多个表中运行选择的任何方法......所以,除非您想使用下面的建议,否则您只需循环遍历所有'可更新'模型。
但是,您可能需要考虑使用UpdatedItems
模型,可能类似于:
class ItemUpdate(m.Model):
when = m.DateTimeField(...)
instance = m.GenericForeignKey(...)
field = m.CharField(...)
old_value = m.CharField(...)
new_value = m.CharField(...)
然后使用post_save
信号填充它:
form django.db.models.signals import post_save
def handle_post_save(sender, instance, *args, **kwargs):
ItemUpdate(instance=instance, ...).save()
我不知道如何弄清楚哪些字段已更新...但我确定有人会在Google上询问此事。