0

私の ModelForm では、ForeignKey フィールドを無効にする必要があります。私はこのことを試しましたが、選択はまだ有効になっており、HTMLコード属性でわかるようにウィジェットに追加されていません。これが私のコードModelFormコードです:

class ZayvkiAdminForm(ModelForm):
    class Meta:
        model = Zayvki
    def __init__(self, *args, **kwargs):
        if not kwargs.get('instance', None):
            if not kwargs.get('initial', None):
                kwargs['initial'] = {}
            if not kwargs['initial'].get('nomer_zayvki', None):
                kwargs['initial']['nomer_zayvki'] = get_request_number()
        super(ZayvkiAdminForm, self).__init__(*args, **kwargs)
        instance = getattr(self, 'instance', None)
        if instance and instance.id:
            self.fields['tipe_zayvki'].required = False
            self.fields['tipe_zayvki'].widget.attrs['disabled'] = 'disabled'
            self.fields['nomer_zayvki'].widget.attrs['readonly'] = True

更新:ユーザーがオブジェクトを作成するときに何かを追加できるようにする必要があるため、excludeまたはreadonly属性を使用できません。ModelAdminしかし、オブジェクトが作成されたときに、ユーザーが値を表示して編集しないようにしたくありません。

4

2 に答える 2

0

AMoedlAdminは解決策になる可能性があります。

class CustomAdmin(admin.ModelAdmin):
    readonly_fields = ('tipe_zayvki',)

get_readonly_fieldsここに例という名前のメソッドもあります:

class CustomAdmin(admin.ModelAdmin):
    def get_readonly_fields(self, request, obj=None):
        if obj:
            return ['tipe_zayvki']
        else:
            return []
于 2013-07-27T19:24:03.123 に答える