私はdjangoでフォームを作成しており、ユーザがデバイスの一部を削除できるようにしたいと考えています。私のフォームの送信ボタンをクリックすると、メッセージが表示され続けます:Select a valid choice. <Some choice> is not one of the available choices
。ここに私のコードです。どうもありがとう:)MultipleChoiceField - invalid_choiceエラー - 有効な選択を選択します。 SomeChoiceは利用可能な選択の1つではありません
ことを注意 class DeleteDeviceForm(forms.Form):
devices = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)
class DeleteDeviceForm(forms.Form):
devices = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)
views.py
def delete_device(request):
if request.method == 'POST':
deletedeviceform = DeleteDeviceForm(request.POST)
if deletedeviceform.is_valid():
devicelist = request.POST.getlist('devices')
#will put other stuff there to process the data later, just want to access list now
return HttpResponseRedirect('/accounts/loggedin', {"devicelist": devicelist, })
else: #if not a POST request
userid = request.user.profile.pk
devices = Device.objects.filter(user_id=userid)
deletedeviceform = DeleteDeviceForm()
deletedeviceform.fields['devices'].choices = [(x.id, x) for x in devices]
return render(request, 'userprofile/delete_device.html', {"full_name": request.user.username, "deletedeviceform": deletedeviceform,})
forms.py:私はあなたが設定した
[OK]を感謝それは素晴らしい出発点です! :)しかし、私はこれに似て何かを持っている必要があります知っている: def __init __(自己、* args、** kwargs): スーパー(DeleteDeviceForm、自己).__ init __(* args、** kwargs) self.queryset = Device.objects.filter(user_id = ????) 私はそのフォームの中に自分のユーザーIDを取得するはずです...私はこれをどのようにコード化することができますか?ありがとうたくさん:) – Rose
あなたはそれをビューから渡し、* argsか** kwargsから取得する必要があります。 –