1 回答
TA贡献1830条经验 获得超3个赞
在 POST 请求的情况下,您作为第一个参数传递,从而作为 传递,而不是作为数据传递。您可以将视图重写为:request.POSTauthor
def sms(request):
if request.method == 'POST':
form2 = list_data(request.user, data=request.POST)
if form2.is_valid():
choice = form2.cleaned_data["List"]
print(choice)
else:
form2 = list_data(author=request.user)
return render(request, "data_list/sms.html", {"form2": form2})
但是,我建议在这里使用ModelChoiceField [Django-doc],它将删除一些样板逻辑,然后您可以使用模型对象:
class ListDataForm(forms.Form):
message = forms.CharField(widget=forms.Textarea)
list = forms.ModelChoiceField(queryset=List.objects.none())
def __init__(self, author, *args, **kwargs):
super(list_data, self).__init__(*args, **kwargs)
self.fields['list'].queryset = List.objects.filter(author=author)
请注意,根据 PEP-0008 样式指南,类应以 PerlCase 编写(因此 ,不是 ),属性应以 snake_case 编写,因此 ,不是 。ListDataFormlist_datalistList
添加回答
举报
