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 に答える