我的型号是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 = ???
1条答案
按热度按时间pzfprimi1#
如果我没理解错的话,你应该可以使用pre_保存或者post_save信号.在django中,信号被用来触发事件或者改变特定事件的数据.最常见的是当一个示例被保存或者删除的时候.
https://docs.djangoproject.com/en/4.1/ref/signals/