1

Action から継承するクラス InheritAction があります。ここで私がやりたいことは、PositiveIntegerField にさまざまな選択肢を提供することです。django でクラス属性をオーバーライドできないことはわかっています。しかし、これを行う方法はありますか。前もって感謝します

     ACTION_TYPE = (
            (1, 'Approve'),
            (2, 'Reject'),
            (3, 'More Information Required'),
            (4, 'Status Update')
            )
    class Action(models.Model):
        type = models.PositiveIntegerField(choices=ACTION_TYPE)

    INHERIT_ACTION_TYPE = (
            (1, 'Approve'),
            (2, 'Reject'),
            (3, 'More Information Required'),
            (4, 'Status Update')
            )
    class InheritAction(Action):
        pass

私はこれをやってみました...

InheritAction._meta.get_field('type).choices = INHERIT_ACTION_TYPE

しかし、エラーが発生します...

AttributeError: can't set attribute
4

1 に答える 1

0

フォームの選択肢を上書きできます。

class InheritActionForm(forms.ModelForm):
    type = forms.ChoiceField(choices = INHERIT_ACTION_TYPE)

    class Meta:
        model = InheritAction

必要に応じて、管理者でそのフォームを使用できます

選択オプションがデータベースに制約を追加しないことを私が知っている限り、それは自動生成されたフォームのためだけです。

于 2012-11-21T20:25:14.010 に答える