0
我很難處理特殊情況。有一個UpdateView
,我用它來提供一個標準表格(專門爲ModelForm
)和一個內聯表單。使用UpdateView和InlineFormSet時,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())'和現在它工作正常。 –