django 根据另一个模型的注解定期创建/更新模型

np8igboo  于 2022-12-24  发布在  Go
关注(0)|答案(1)|浏览(153)

我的型号是Foo,它会定期更改(为了简单起见,每周都要)。这个模型对应的API端点只需要注解foo_annotate。我希望即使周期发生变化也能够回溯。我当前的设置工作正常,但我意识到如果在数据库中创建新条目,我可能会耗尽存储空间。因此,与其这样做,我根据Foo的计算值创建了一个新模型。
以下是我目前掌握的情况:

class FooManager(models.Manager):
    ...

    def get_queryset(self):
        return super(FooManager, self).get_queryset() \ 
            .annotate(foo_annotate=Coalesce(models.Count("bar"), 0))
            # Annotation is much more complex

class Foo(models.Model):  # Periodic model
    ...
    period = models.CharField(...)  # Name of current period, unsure if DateField is better
    user = models.ForeignKey(User, ...)
    objects = FooManager()

class Bar(models.Model):  # Fields may change
    ...
    foo = models.ForeignKey(Foo, ...)

class Baz(models.Model):  # Model based on annotation
    period = ...
    foo_annotate = ???
pzfprimi

pzfprimi1#

如果我没理解错的话,你应该可以使用pre_保存或者post_save信号.在django中,信号被用来触发事件或者改变特定事件的数据.最常见的是当一个示例被保存或者删除的时候.
https://docs.djangoproject.com/en/4.1/ref/signals/

相关问题