0

フォーム.py

class BandForm(forms.ModelForm):
    time_from = forms.ChoiceField(choices=[(8,  "08:00"),(9, "09:00"),(10, "10.00"),(11,  "11:00"),
                                           (12, "12:00"),(13, "13:00"),(14, "14:00"),(15, "15:00"),
                                           (16, "16:00"),(17, "17:00"),(18, "18:00"),(19, "19:00"),
                                           (20, "20:00"),(21, "21:00"),(22, "22:00"),(23, "23:00")])
    time_to   = forms.ChoiceField(choices=[(8,  "08:00"),(9,  "09:00"),(10, "10:00"),(11, "11:00"),
                                           (12, "12:00"),(13, "13:00"),(14, "14:00"),(15, "15:00"),
                                           (16, "16:00"),(17, "17:00"),(18, "18:00"),(19, "19:00"),
                                           (20, "20:00"),(21, "21:00"),(22, "22:00"),(23, "23:00")])
    class Meta:
        model = Entry1
        exclude = ('created','date')

views.py の一部

if request.method == "POST":
        form = BandForm(request.POST)
        if form.is_valid():
            form = form.save(commit=False)
            if year and month and day:
                form.date = datetime.date(int(year),int(month),int(day))
                form.save()

クラスBandformのforms.pyで検証を行いたいとしましょう

def clean_fieldname(self): ....

通常、次のようなパラメーターが渡されます -- self.cleaned_data.get('field_name')。したがって、self.cleaned_data.get('time_from') をフェッチしようとすると、すべてうまくいきます。しかし、 self.cleaned_data.get('date') をフェッチしようとすると、 None returned が返されます。

なんで?

答え

Django Modelform (除外フィールドあり) 私が提供した投稿から少し不明だった唯一のことは、forms.py のインスタンスに self.instance.fieldname としてアクセスする必要がありますが、self.cleaned_data.get('fieldname') ではアクセスしないことです。

4

1 に答える 1

0

あなたの除外で:

exclude = ('created','date')

dateフィールドがフォームに表示されないように除外しています。dateこれは、cleaned_data にアクセスできない理由を説明している可能性があります。date除外タプルから削除して、テンプレートでレンダリングして、表示されるかどうかを確認してください。

于 2011-04-20T18:18:17.177 に答える