我正在尝试forms.ModelForm
使用基于forms.Form
. 不幸的是,我得到一个AttributeError
表明该领域不存在的消息,我不确定为什么会这样。
错误是 AttributeError: 'ElectionSuggestionForm' object has no attribute 'PostElection'
这是views.py:
def new_post(request):
if request.method == 'POST':
form = NewPostForm(request.POST)
election_form = ElectionSuggestionForm(request.user, request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = Candidate.objects.get(UserID=request.user, ElectionID=election_form.PostElection)
post.save()
return redirect('/feed/')
else:
form = NewPostForm()
election_form = ElectionSuggestionForm(request.user)
return render(request, 'campaign/new_post.html', {
"form": form,
"election_form": election_form,
})
这是forms.py:
class ElectionSuggestionForm(forms.Form):
PostElection = forms.ModelChoiceField(queryset=None)
def __init__(self, user, *args, **kwargs):
super(ElectionSuggestionForm, self).__init__(*args, **kwargs)
print(Election.objects.all().filter(candidate__UserID=user))
self.fields['PostElection'].queryset = Election.objects.all().filter(candidate__UserID=user)
谢谢
要访问表单的 PostElection 属性的值,您必须按以下方式进行
election_form.cleaned_data['PostElection']
self.cleaned_data
是一个字典,在调用is_valid()
方法后接收所有清理和验证的数据。
请确保调用is_valid()
上election_form
为好。
def new_post(request):
if request.method == 'POST':
form = NewPostForm(request.POST)
election_form = ElectionSuggestionForm(request.user, request.POST)
if form.is_valid() and election_form.is_valid():
post = form.save(commit=False)
post.author = Candidate.objects.get(
UserID=request.user,
ElectionID=election_form.cleaned_data['PostElection']
)
post.save()
return redirect('/feed/')
else:
form = NewPostForm()
election_form = ElectionSuggestionForm(request.user)
return render(request, 'campaign/new_post.html', {
"form": form,
"election_form": election_form,
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句