自分のサイトに複数のフォームがあり、PostgreSQLデータベースに情報を保存しています。 私は私のセットモデルのための情報を保存するためのフォームを作成しようとしています:DjangoフォームがModelChoiceFieldで保存されない - ForeignKey
class Set(models.Model):
settitle = models.CharField("Title", max_length=50)
setdescrip = models.CharField("Description", max_length=50)
action = models.ForeignKey(Action)
actorder = models.IntegerField("Order number")
設定したフォームは、次のようになります。
def createset(request):
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
elif request.method == "GET":
#create the object - Setform
form = SetForm;
#pass into it
return render(request,'app/createForm.html', { 'form':form })
elif "cancel" in request.POST:
return HttpResponseRedirect('/actions')
elif request.method == "POST":
# take all of the user data entered to create a new set instance in the table
form = SetForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/actions')
else:
form = SetForm()
return render(request,'app/createForm.html', {'form':form})
フォームを:私はアクションモデルからアクション名フィールドのリストを引っ張ってModelChoiceFieldを使用しています、これはcreatesetのためのビューは以下の通りです
class SetForm(ModelForm):
class Meta:
model = Set
fields = ['settitle', 'setdescrip', 'action', 'actorder']
action = forms.ModelChoiceField(queryset = Action.objects.values_list('name', flat=True), to_field_name="id")
選択ドロップダウンとしてフォーム上に表示されます有効でSaveが押された場合、何も起こりません。エラーはなく、ページは新しいフォームに更新されます。 (action = forms.ModelChoiceField(queryset = Action.objects.values_list( 'name'、flat = True)、to_field_name = "id")を使用してforms.pyにアクションフィールドを設定しないと、データは保存されます、それは私が間違った何かをしている可能性が高いです。何が分からないの?
ありがとうございます!それは今働いています – RebeccaRol