django - 重载 get_FIELD_display() 函数

标签 django django-models

有没有办法正确重载 Django 的 get_FIELD_display() 函数?当我从内部调用函数时,结果是递归。但我也不能使用 super() 调用它,因为它不是父类的方法,而是元类创建的方法...

目标是有一个通用接口(interface)来获取可显示版本的 CHOICE 字段(由 get_FIELD_display 给出),但可以在一些具体案例。

例子:

# This does not work because it results in recursion
def get_opposition_state_display(self):
    """Overloading of default function."""
    value = self.get_opposition_state_display()
    if self.opposition_state == 4: 
        return '%s %s' % (value, self.opposition_date.strftime('%d.%m.%Y'))
    return value

最佳答案

已更新

field = self._meta.get_field('opposition_state')
value = self._get_FIELD_display(field)

关于django - 重载 get_FIELD_display() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293294/

相关文章:

python - 使用 Django 的每个模型的唯一 HTML 元素 ID

python - 在 Django 中获取按月分组的结果

python - 如何使用 Factory_Boy 创建管理员用户?

django - 子查询 select where 子句

python - 如何将每个日期时间间隔的平均值 MySQL 查询重写为 Django QuerySet?

django - 如何从 Django Admin 调用模型方法或属性?

django - 如何为 Django 测试模拟 Redis

python - Django:在模型保存中获取当前用户

django - ManyToOneRel 字段用于以下功能?

python - 如何在 Django 中将权限添加到模型并使用 shell 对其进行测试