找不到或无法识别表单

2024-09-20 04:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的ModelMultipleChoiceField形式是这样的:

class UserResponseSearchForm(forms.Form):
    def __init__(self, *args, **kwargs):
        qry = kwargs.pop('qry')
        super(UserResponseSearchForm,self).__init__(*args, **kwargs)
        self.fields['gejala_id0'] = forms.ModelMultipleChoiceField(queryset=Gejala.objects.filter(gejala__icontains=qry).values_list('gejala', flat=True).distinct().order_by('gejala'),widget=forms.CheckboxSelectMultiple, required=False)

    gejala_id1 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(id_organ=1).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
    gejala_id2 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(id_organ=2).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
    gejala_id3 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(id_organ=3).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)

我的观点是这样的:

def responsePenyakit(request):
if request.user.is_authenticated:
    if request.method == 'POST':
        form = UserResponseForm(request.POST)
        gejala0 = form["gejala_id0"].data
        gejala1 = form["gejala_id1"].data
        gejala2 = form["gejala_id2"].data
        gejala3 = form["gejala_id3"].data

        if (len(gejala0) > 0):
            for i in range(0, len(gejala0)):
                userAnswer = UserAnswer()
                userAnswer.gejala_answer = gejala1[i]
                userAnswer.user_id = request.user.id
                userAnswer.number_diagnosis = user.number_diagnosis + 1
                userAnswer.save()
                print(gejala0)

        if (len(gejala1) > 0):
            for i in range(0, len(gejala1)):
                userAnswer = UserAnswer()
                userAnswer.gejala_answer = gejala1[i]
                userAnswer.user_id = request.user.id
                userAnswer.number_diagnosis = user.number_diagnosis + 1
                userAnswer.save()

        if (len(gejala2) > 0):
            for i in range(0, len(gejala2)):
                userAnswer = UserAnswer()
                userAnswer.gejala_answer = gejala2[i]
                userAnswer.user_id = request.user.id
                userAnswer.number_diagnosis = user.number_diagnosis + 1
                userAnswer.save()

        if (len(gejala3) > 0):
            for i in range(0, len(gejala3)):
                userAnswer = UserAnswer()
                userAnswer.gejala_answer = gejala3[i]
                userAnswer.user_id = request.user.id
                userAnswer.number_diagnosis = user.number_diagnosis + 1
                userAnswer.save()
    return redirect('diagnosis_penyakit:response_matching')
else:
    raise Http404

我想从gejala_id0表单中得到我选择的数据。我试着像在我的views.py中那样获取数据

但是有返回错误Key 'gejala_id0' not found in 'UserResponseForm'.有什么问题吗?我认为我所做的是正确的。CMIIW公司

请帮帮我。我是刚到django的


Tags: informidnumberlenifrequestforms
1条回答
网友
1楼 · 发布于 2024-09-20 04:09:22

首先创建字段,然后更改__init__中的queryset

class UserResponseSearchForm(forms.Form):
    def __init__(self, *args, **kwargs):
        qry = kwargs.pop('qry')
        super(UserResponseSearchForm,self).__init__(*args, **kwargs)
        self.fields['gejala_id0'].queryset = Gejala.objects.filter(gejala__icontains=qry).values_list('gejala', flat=True).distinct().order_by('gejala')

    gejala_id0 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.none(), widget=forms.CheckboxSelectMultiple, required=False)
    gejala_id1 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(id_organ=1).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
    gejala_id2 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(id_organ=2).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
    gejala_id3 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(id_organ=3).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)

同时将qry发送至表格:

def responsePenyakit(request):
if request.user.is_authenticated:
    if request.method == 'POST':
        form = UserResponseForm(data=request.POST, qry=query)

相关问题 更多 >