【发布时间】:2018-08-08 11:10:15
【问题描述】:
我有以下型号:
class CaseForm(ModelForm):
class Meta:
model = Case
fields = '__all__'
class ClientForm(ModelForm):
class Meta:
model = Client
fields = '_all__'
CaseClientFormset = inlineformset_factory(Case, Client, form=ClientForm,
extra=0, max_num=2, min_num=1,
validate_max=True,
validate_min=True)
当我填写表格(caseform)的顶部时,它会正确保存。当我填写caseform和clientform时,它会正确保存。
如果我填写了caseform但部分填写了clientform,则似乎不会进行任何验证,并且会保存一个案例,并且客户信息会丢失并且永远不会保存。
class CaseCreateView(LoginRequiredMixin, AdviserExistenceMixin,
CreateView):
model = Case
form_class = CaseForm
def form_valid(self, form):
context = self.get_context_data()
clients = context['clients']
self.object = form.save()
if clients.is_valid():
clients.instance = self.object
clients.save()
return super(CaseCreateView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.request.POST:
context['clients'] = CaseClientFormset(self.request.POST)
else:
context['clients'] = CaseClientFormset()
context['navbar'] = str(self.model.__name__).lower()
return context
我遇到的另一个问题是,尽管指定了 min_num=1 和 validate_min=True,但我似乎能够在不填写客户表单的情况下保存案例。
任何帮助将不胜感激。
【问题讨论】: