0

モデルフォームでdjangoモデルフォームの継承を使用していますが、ここでは機能していないようです私のコードサンプルです

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」から「sites」を除外したいのですが、検証中にフォームの検証エラーが発生しているサイト フィールドが必要です。

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

ビューでは、 ArticleAddForm を Article オブジェクトで初期化して、空白フィールド、つまり除外フィールドを埋める必要があります。例えば:

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 に答える