私は日付に関連した時間枠のセットのためのフォームを作成するフォームセットを使用しようとしています:フォームセット内の各フォームごとに異なるkwargsからの提供
class Event(models.Model):
date = models.DateField()
class TimeFrame(models.Model):
start = models.DateTimeField()
end = models.DateTimeField()
event = models.ForeignKey('Event')
私は、各イベントのために私の時間枠のクエリセットを取得するコードを持っています私のフォームにこれを渡すkwargを追加し、:
class SelectDatesForm(forms.Form):
timeframes = forms.ModelChoiceField(queryset=HostTimeFrame.objects.none())
def __init__(self, *args, **kwargs):
qs = kwargs.pop('timeframes')
super(SelectDatesForm, self).__init__(*args, **kwargs)
self.fields['timeframes'].queryset = qs
は今、私は私が1ページに複数のイベントのための時間枠を表示することができますフォームセットを構築しようとしています。私はすでにthisの質問を見つけ、初期データをサーバフォームに渡す方法を説明しましたが、それはクエリーセットに渡すのと同じではありません。
また、django 1.9の新機能はthisですが、各フォームで異なるクエリセットを取得することはできません。
UPDATE:
ここSelect a valid choice. That choice is not one of the available choices.
は私が私の見解では何をすべきかです: 私はイムランニングformset.is_validは()私はエラーを取得するたびに、しかし、作業の回答から解決策を得た
timeframes = [HostTimeFrame.objects.all()]
SelectDatesFormset = formset_factory(form=SelectDatesForm, extra=len(timeframes), formset=BaseSelectDatesFormSet)
if request.method == 'POST':
formset = SelectDatesFormset(request.POST, form_kwargs={'timeframes_list': timeframes})
if formset.is_valid():
# do something with the formset.cleaned_data
print(formset)
pass
else:
formset = SelectDatesFormset(form_kwargs={'timeframes_list': timeframes})
私はこの実際の検証がどこで行われたかを見つけるのに何時間も努力してきましたが、私のライブではそれを見つけることができません。
編集:私はこれを単数形でテストしましたが、私は同じ問題を抱えています。私はhereの新しい質問を作成しました。