知道是否选择了外键

时间:2014-09-30 06:27:18

标签: python django django-models django-signals

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加1。

是否有可用于检测是否选择了外键的信号?

1 个答案:

答案 0 :(得分:0)

您可以根据限制和当前使用来存储限制并计算可用性,而不是存储availability

这样的东西
class Foo(models.Model):
    name = models.CharField(max_length=256)
    total = models.SmallIntegerField()
    limit = models.SmallIntegerField() 

    def get_availability(self):
        return limit - self.bar_set().count()

您可以将availability作为模型的属性而不是方法调用。