0
自定義窗體所以這是我的表格:Django的get_FOO_display不工作
class QuestionForm(forms.ModelForm):
answer = forms.ChoiceField(required=True, widget=forms.RadioSelect())
def __init__(self, question=None, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
self.fields['answer'].choices = [(a.answer, a.answer) for a in Answer.objects.filter(question=question)]
class Meta:
model = Questions
fields = ('answer', 'importance')
當用戶選擇一個answer
它顯示了所有Answer
對象。這裏是我的看法:
def questions(request):
new_forms = []
q = Questions.objects.all()[0]
if request.method =='POST':
#form = QuestionForm(request.POST or None)
for forms in new_forms:
if forms.is_valid():
new = forms.save(commit=False)
#get the user's inputs to the QuestionForm and save them
UserAnswer(user=request.user, answer=new.cleaned_data['answer'], question=new.question)
UserAnswer.save()
else:
instance=Questions.objects.all().filter(owner=request.user)[0]
#form = QuestionForm(question=q, instance=q)
for a in Questions.objects.all():
new_forms.append(QuestionForm(question=a, instance=a))
return render_to_response("questions/base.html", locals(), context_instance=RequestContext(request))
讓我澄清我在做什麼。我有一個「問題」模型,它有相關的答案。用戶應該能夠選擇他們對每個問題的答案。這些答案將像'UserAnswer(user = request.user,question = question,answer = answer)'一樣保存到'UserAnswers'中。我可以讓窗體正確顯示上面所做的(我無法弄清楚如何使用Formset做到這一點),但我無法正確保存UserAnswer。我已經更新了我的答案,以匹配我想要做的更好的事情。 – jmitchel3 2013-02-18 01:07:41
問題是什麼?如果有錯誤,您必須發佈它們。根據我所看到的,你當前的代碼應該會拋出錯誤。 new.cleaned_data不應該工作/存在。保存ModelForm將返回實例,而不是表單。 – 2013-02-18 02:25:01