我有这个型号
class Home(models.Model):
...
number_female = models.IntegerField()
number_male = models.IntegerField()
def all_people(self):
return self.number_female + self.number_male
all_members = all_people(self)
我收到:名称“self”未定义
。
如何定义一个获取模型方法结果的字段?这个 Home
场景只是一个例子,我有更复杂的模型,我只是想让问题更清楚。
最佳答案
如果您想添加像 all_members
这样的计算字段作为模型的一部分,那么您必须重写 save
函数:
class Home(models.Model):
...
all_members = models.IntegerField()
def save(self):
all_members = self.all_people()
super(Home, self).save()
现在您可以按all_members
进行过滤。在这种情况下,最好对 all_members
使用 @property
装饰器。
另一种方法是使用 a different stackoverflow answer 中提到的 Django 的 extra
方法。
关于python - django - 获取模型方法结果的模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156066/