사용자가 일부 장치를 삭제할 수 있도록하기 위해 django에서 양식을 만듭니다. 양식의 제출 버튼을 클릭하면 메시지가 계속 나타납니다 : Select a valid choice. <Some choice> is not one of the available choices
. 여기 내 코드가있다. 고마워요 :)MultipleChoiceField - invalid_choice 오류 - 유효한 선택 항목을 선택하십시오. SomeChoice는 사용 가능한 선택 사항 중 하나가 아닙니다.
있습니다 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 : 나는 당신이 설정 한
확인 감사 : 단 하나 개의 라인 변경
views.py
forms.py
: 여기
내가 내 코드를 변경하는 방법입니다 , 그것은 좋은 출발점이다! :) 그러나 나는 이것과 비슷한 것을 가지고 있어야한다는 것을 알고있다 : def __init __ (self, * args, ** kwargs) : super (DeleteDeviceForm, self) .__ init __ (* args, ** kwargs) self.queryset = Device.objects.filter (user_id = ????) 내 사용자 ID를 어떻게 얻을 수 있을지 모르겠다 ...이 코드를 어떻게 작성할 수 있을지에 대한 제안이 있으십니까? 고마워요 :) – Rose
당신은보기에서 그것을 전달하고 * args 또는 ** kwargs에서 얻을 필요가있다. –