私は特別なケースを扱うのに苦労します。標準フォーム(具体的にはModelForm
)とインラインformsetを提供するために私が使用するUpdateView
があります。InlineFormSetでUpdateViewを使用しているときにDjango ForeignKeyオブジェクトが保存されない
views.py
コードは次のようになります。私は、例えば(私はこの更新ビューを開くときに、予想通り
class Contract(LoginRequiredMixin, UpdateView):
template_name = '/path/to/template.html'
model = ContractModel
form_class = ContractModelForm
success_url = reverse_lazy('contract-list')
def get_context_data(self, **kwargs):
context = super(ContractVerificationUpdate, self).get_context_data(**kwargs)
if self.request.POST:
context['student_form'] = StudentsFormSet(self.request.POST)
else:
context['student_form'] = StudentsFormSet(instance=self.object)
return context
def form_valid(self, form):
self.object = form.save(commit=False)
context = self.get_context_data()
student_form = context['student_form']
if student_form.is_valid():
self.object = form.save()
student_form.instance = self.object
student_form.save()
return HttpResponseRedirect(self.get_success_url())
else:
return self.render_to_response(self.get_context_data(form=form))
、この契約モデルに割り当てられた学生のがすべて示されているが、私は彼らに何かを編集するとき生徒の名前を編集する)、保存ボタンを押すと保存されません。私のデバッガでは、student_form.save()
という行に到達していることが確認されていますが、オブジェクト自体は保存されませんが、オブジェクトを更新するはずです。これには何が問題なのですか?
解決することは非常に簡単ですが、私の心は本当にこの時点で固まっています!どんな種類の助けや提案も大歓迎です!
ありがとうございます!
は、あなたも、理にかなっているモデルとフォームセット – zaidfazil
を示すことができる: 'get_context_data(でPOSTリクエストの場合には) '、私は' context ['student_form'] = StudentsFormSet(self.request.POST) 'をこの' context ['student_form'] = StudentsFormSet(self.request.POST、instance = self.get_object()) 'に変更しました。今それは正常に動作します。 –