1

假设我field在模型中调用了一个字段,其中一个choices参数定义了该方法要返回的值get_field_display

我需要该get_field_display方法根据另一个字段返回不同的值。有什么办法可以覆盖get_field_display吗?

这不起作用:

def get_field_display(self):
    if self.other_field == 1:
        return 'Other value'

    return super.get_field_display(self)
4

2 回答 2

4

您不能调用super,因为该函数不是由父类而是由ModelBase元类定义的。试试这个:

def get_field_display(self):

    if self.other_field == 1:
        value = 'Other value'
    else:
        field_object = self._meta.get_field('field')
        value = self._get_FIELD_display(field_object)

    return value
于 2012-10-30T13:09:05.773 回答
1

您可以做的是在同一模型中创建不同的功能,然后对其进行修补。例如,在 admin.py 中,您可以执行以下操作:

ClassName.get_field_display = ClassName.get_patched_field_display

这不是很“好”,但它对我有用。

于 2017-12-14T15:43:50.870 回答