在我的django应用程序页面中,它具有多种形式,因此主形式具有子形式。 提交时,我检查所有表单是否有效,如果任何表单无效,它将返回包含主表单的form_invalid函数。
但是问题是,如果任何子表单无效,则不会显示任何错误,并且字段也将重置。
这是提交表单时的代码。
if player_form.is_valid() and stats_form.is_valid() and contacts_form.is_valid() and extra_stats_form.is_valid():
player = player_form.save(commit=False)
stats_form = PlayerStatsForm(request.POST,instance=player.stats)
stats = stats_form.save()
contacts_form = PlayerContactsForm(request.POST,instance=player.contacts)
contacts = contacts_form.save()
extra_stats_form = PlayerExtraStatsForm(request.POST,instance=player.extra_stats)
extra_stats = extra_stats_form.save()
return redirect(self.get_success_url())
else:
return self.form_invalid(player_form)`
get_context_data函数将子表单添加到主播放器表单中。
context.update({
'object_title_plural': 'Players','list_headings': self.list_headings,'form_panel_title': 'Add Player','save_button_text': 'Add Player','search_form': self.form_defaults(PlayerSearchForm()),'sub_forms': (self.form_defaults(self.get_form(PlayerStatsForm)),self.form_defaults(self.get_form(PlayerContactsForm)),self.form_defaults(self.get_form(PlayerExtraStatsForm)))
})
这是呈现子表单的模板。
{% block display_subforms %}
{% if sub_forms %}
{% include "dashboard/includes/sub_form.html" %}
{% endif %}
{% endblock %}