2012-09-25 46 views
0

在自定义的ModelForm中,我希望有一个HiddenInput字段,该字段具有模型的Autofield主键的值。如果表单是在没有模型的情况下创建的,那么此字段将为None。如果提供模型来实例化表单,它应该包含模型的Autofield ID。这可能吗?我想是这样的:如何将模型的Autofield值作为自定义ModelForm字段

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) 

回答

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 
相关问题