我有两个模型
Model A:
fieldA1
fieldA2
Model B:
fieldA = ForeignKey(A)
fieldB1
fieldB2
我需要创建ModelFormB,但我还需要通过表单将值插入到Model B中。所以我创建
ModelForm B:
fielda1 = form.CharField()
fielda2 = form.CharField()
class Meta:
model = ModelB
field = [fielda1, fielda2, fieldb1, fieldb2]
Mu UpdateView代码:
class ModelBUpdateView(LoginRequiredMixin, UpdateView):
model = ModelB
form_class = ModelFormB
template_name = "....."
success_url = reverse_lazy('...')
问题是,在模板中我只能看到ModelB(fieldb1,fieldb2)实例的初始值,但fielda1和fielda2完全空白。
在更新视图期间如何将值发送到fielda1和fielda2?
默认情况下,UpdateView仅更新单个模型。保存模型B时,可以覆盖get_initial()和form_valid()来更新模型A。
class ModelBUpdateView(LoginRequiredMixin, UpdateView):
model = ModelB
form_class = ModelFormB
template_name = "....."
success_url = reverse_lazy('...')
def get_initial(self):
initial = super().get_initial()
initial['fielda1'] = self.object.fieldA.fieldA1
initial['fielda2'] = self.object.fieldA.fieldA2
return initial
def form_valid(self, form):
response = super().form_valid(form)
form.instance.fieldA.fieldA1 = form.cleaned_data['fielda1']
form.instance.fieldA.fieldA2 = form.cleaned_data['fielda2']
return response