【发布时间】:2014-11-24 16:26:04
【问题描述】:
class Foo(models.Model):
name = models.CharField(max_length=256)
total = models.SmallIntegerField()
availability = models.SmallIntegerField()
class Bar(models.Model):
somthing = ...
foo = models.ForeignKey(Foo, blank=True, null=True)
每次您保存 Bar,并且用户选择了 Foo 时,它必须将可用性降低 1。当用户从 Foo 中取消选择一个选项时,它会将可用性增加 1。因此,如果您选择另一个选项,则该选项减 1,取消选择的选项加 1。
是否有信号可以用来检测外键是否被选中?
【问题讨论】:
-
是否需要明确存储
availability?每次使用简单的foo.bar_set.count()或聚合来计算可能会更好。 -
我需要存储它,是的,它可以在应用程序中再次使用。但这将如何改变任何事情?
-
“另一种用途”并不意味着您必须实际存储它:您可以每次为“其他用途”计算它吗?它改变了一些事情,因为非规范化,也就是你在这里所说的,很棘手,并且存在事情不同步的风险。
-
好的,可以说它不必存储。我明白我们的说法
标签: python django django-models django-signals