मेरे form.py में 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)

और मेरे विचार.py इस तरह:

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'. इसमें क्या समस्या है? मुझे लगता है कि मैं जो कर रहा हूं वह सही है। सीएमआईआईडब्ल्यू

क्रिप्या मेरि सहायता करे। मैं django . में नया हूँ

0
kelvinrayner 30 मई 2019, 04:26

1 उत्तर

सबसे बढ़िया उत्तर

पहले फ़ील्ड बनाएं और फिर क्वेरीसेट को __init__ में बदलें।

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)
0
katoozi 30 मई 2019, 07:29