python - django - 获取模型方法结果的模型字段

标签 python django

我有这个型号

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/

相关文章:

python - Python中dict的元组列表

python - Plotly:如何为箱线图中的每个点分配唯一的名称?

django - 使用 CreateView 将请求变量传递给模型的最佳方法是什么

django - post_syncdb 上不存在 ContentType 匹配查询

django - ST_Transform 和 CoordTransform 之间涉及 preset 的不同计算

django - 如何清理 InlineFormSet 中的某个字段?

python - 在python中读取一个pgm文件

python - Google App Engine cron 作业失败并出现 404 错误

django - Docker&Celery - 错误 : Pidfile (celerybeat. pid) 已经存在

python - 编写 Python 开发环境设置脚本