0

我在我的模型表单中使用 django modelform 继承,但它似乎在这里不起作用是我的代码示例

class ArticleForm(forms.ModelForm):
  title = forms.CharField(required=True)
  sites = forms.ModelMultipleChoiceField(required=True, queryset= Sites.objects.all().order_by('name'), widget=forms.SelectMultiple())

class ArticleAddForm(ArticleForm):
   class Meta(ArticleForm.Meta):
       exclude = ('sites',)

我想从“ArticleAddForm”中排除“站点”,但是在验证它时会引发表单验证错误站点字段,请帮忙?

4

2 回答 2

2

我相信,ModelForms 不能很好地处理继承。

可能你能做的最好的事情就是删除required子类中的标志:

def __init__(self, *args, **kwargs):
    super(ArticleAddForm, self).__init__(*args, **kwargs)
    self.base_fields['sites'].required = False
    self.base_fields['sites'].widget = HiddenInput() # if you want
于 2012-09-28T19:34:42.930 回答
0

在您看来,您需要使用 Article 对象初始化 ArticleAddForm 以填充空白字段,即排除字段。例如:

sites = Sites.objects.all()    # modify this according to your needs
article = Article(title='', sites=sites)
form = ArticleAddForm(request.POST, instance=article)
form.save()
于 2012-09-28T19:42:08.173 回答