【问题标题】:Query field across multiple django models跨多个 django 模型的查询字段
【发布时间】:2010-10-25 23:55:00
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: django


    【解决方案1】:

    我不知道有什么方法可以跨多个表运行选择……所以,除非你想使用我下面的建议,否则你只需要遍历所有“可更新”模型。

    但是,您可能需要考虑使用 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 上问过这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2013-05-17
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多