私のpostgresデータベースのビューからMultiple Choice Fieldを作成しようとしていますが、Webページが正しく表示されていません。具体的には、正しい数の選択肢を提供しているが、「check_name」フィールドで名前を付けない代わりに、「Select object」のすべての名前を付けます。ここに私のコードは次のとおりです。注目すべきDjango ModelMultipleChoiceFieldが正しい選択肢名を表示しない
models.py
class Check(models.Model):
pkey = models.AutoField(primary_key=True)
cif = models.CharField(max_length=255)
check_name = models.CharField(max_length=255)
description = models.TextField()
class Meta:
managed = False
db_table = 'precheck_check'
forms.py
class ProcessFileForm(forms.Form):
checks_to_run = forms.ModelMultipleChoiceField(
queryset = Check.objects.all(),
to_field_name = "check_name",
widget = forms.CheckboxSelectMultiple,
)
views.py
def successful_upload(request):
if request.method == 'POST':
form = ProcessFileForm(request.POST, user=request.user)
if form.is_valid():
return render(request, 'precheck/checks_successful.html')
else:
form = ProcessFileForm()
return render(request, 'precheck/select_checks.html',{'form':form})
、私は、postgresデータベースの 'precheck_check'という名前のビューからデータを取得しています。それは私に正しい数の選択肢を与えているので、ビューを正しく見ているようです。
これは私のために働いたので、私は、ANSERを受け入れたが、 'to_field_name =「check_nameは」'同じことを達成しているべきではないのですか? – chaserchap
いいえ。[docsの例(https://docs.djangoproject.com/en/1.11/ref/forms/fields/#django.forms.ModelChoiceField.to_field_name)に示すように、 'to_field_name'は値を制御しますあなたが見ているラベルではなく、あなたが見ることのできないオプションの名前です。 – Alasdair