跨多个django模型的查询字段

时间:2010-10-25 23:55:01

标签: django

我想创建一个“What's New”部分,其中列出了最后一天的所有数据库更改。我在模型中添加了“更新”字段:

class Film(models.Model):
   .
   .
   .
   updated = models.DateTimeField(auto_now=True)

class Actor(models.Model):
   .
   .
   .
   updated = models.DateTimeField(auto_now=True)

现在,我想查询所有模型,以获取最新更改的日期排序列表。如何在多个模型中查询“更新”字段?这是实现主要目的的最有效方式吗?

如果我想更具体并列出每个模型中更改的实际字段,该怎么办?

1 个答案:

答案 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上询问此事。