2
私は動的選択フィールドを作成しようとしています。タプルのリストを作成するビューがあります。タプルの最初の値はオブジェクトServiceWriterの主キーであり、2番目の値はServiceWriterの名前です。その後、リストはフォームクラスに渡されます。私が選択してページを送信すると、フォームは有効ではないと判断され、シェルに以下のフォームエラーが表示されます: "有効な選択を選択します(タプルの最初の値、つまり1,2,3 ..)。利用可能な選択肢の1つではありません。Djangoフォームエラー:有効な選択肢を選択してください。 ...は利用可能な選択の1つではありません
forms.py
class CreateAdvancedRO(forms.Form):
service_writer = forms.ChoiceField()
def __init__(self, writer_choices, *args, **kwargs):
super(CreateAdvancedRO, self).__init__(*args, **kwargs)
self.fields['service_writer'].choices = writer_choices
self.helper = FormHelper()
self.helper.form_id = 'id-create-advanced-ro'
self.helper.form_method = 'post'
self.helper.add_input(Submit('submit', 'Open Repair Order'))
注:私はModelFormを使用していません。
views.py
class CreateAdvancedRO(View):
form_class = CreateAdvancedRO
writer_form = CreateServiceWriter
add_line_form = AddJobLine
def post(self, request):
writer_choices = []
form = self.form_class(writer_choices, request.POST)
print(form.errors)
if form.is_valid():
'''Do something'''
else:
writer_choices = []
try:
writers = ServiceWriter.objects.filter(user=request.user)
for writer in writers:
writer_choices.append((str(writer.id), writer.name))
except ObjectDoesNotExist:
pass
form = self.form_class(writer_choices, request.POST)
writer_form = self.writer_form()
add_line_form = self.add_line_form()
return render(request, 'free/advanced_create.html', {'form': form, 'writer_form': wri
'add_line_form': add_line_form})
私は、ビューで、次の両方を試してみました:ここ
writer_choices.append((str(writer.id), writer.name)) and
writer_choices.append((writer.id, writer.name))
は、念のために、ServiceWriterモデルです。
class ServiceWriter(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=20, blank=False)
def __str__(self):
return str(self.name)
助けてくれてありがとう。
ありがとう、それはトリックでした。それは今明らかな継ぎ目! –