0

カスタム ModelForm では、モデルの Autofield 主キーの値を持つ HiddenInput フィールドが必要です。フォームがモデルなしで作成された場合、このフィールドは None になります。フォームをインスタンス化するためにモデルが提供されている場合は、モデルの Autofield ID が含まれている必要があります。これは可能ですか?私はこのようなことを考えています:

class MyCustomForm(forms.ModelForm):
    the_id = forms.HiddenInput()

    def __init__(self, *args, **kwargs):
        super(MyCustomForm, self).__init__(*args, **kwargs)
        self.fields["the_id"].initial = args.get('id', None)
4

1 に答える 1

1

だから、掘り下げた後、私はこれに出くわしました:

https://groups.google.com/forum/?fromgroups=#!topic/django-users/vmIXXr5tsdI

これは、ModelForms の HiddenInput フィールドがないことを示しています。ドキュメントをもっとよく読むべきでした。これが私が最終的に持っているものです:

MyCustomForm(forms.ModelForm):
    the_id = forms.IntegerField(widget=forms.HiddenInput)

    def __init__(self, *args, **kwargs):
        super(MyCustomForm, self).__init__(*args, **kwargs)

        instance = getattr(self, 'instance', None)
        if instance and instance.id:
            self.fields["the_id"].initial = instance.id
于 2012-09-26T18:09:16.663 に答える