在自定义ModelForm中,我希望有一个HiddenInput字段,该字段具有模型的Autofield主键的值。如果在没有模型的情况下创建表单,则此字段将为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)
答案 0 :(得分: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