|
|
1
30
我接受了卡尔的建议,并做了一个更好的实现,然后我在评论中提到的那个黑客式的,对他的回答。这是我的解决方案: 从my forms.py:
还有行政人员。
这正是我想要的,它使配置文件内联表单集生效。因此,由于概要文件表单中存在必需的字段,因此如果所需的信息没有输入到内联表单中,那么它将验证并失败。 |
|
|
2
20
现在,对于django 1.7,可以使用参数
|
|
|
3
9
您可能可以这样做,但在formset/inline代码中,您必须将手弄脏。 首先,我认为在这种情况下,您希望表单集中始终有一个表单,并且永远不会有多个表单,因此您将希望设置 max_num = 1和 extra =1在您的profileinline中。 你的核心问题是 BaseFormSet._construct_form passes empty_permitted=True 表单集中的每个“额外”(即空)表单。此参数指示窗体在其不变时跳过验证。您只需要找到一种方法来为表单设置空的\u permitted=false。 你可以 use your own BaseInlineFormset subclass 在您的内联中,这样可能会有所帮助。注意到“construct”表单接受**Kwargs并允许覆盖传递给各个表单实例的Kwargs,您可以覆盖Formset子类中的“construct”表单,并在每次调用“construct”表单时将其传递为空的“permitted=false”。缺点是您依赖于内部API(并且您必须重写构造表单)。 或者,您可以尝试重写profileinline上的get_formset方法,调用父级的get_formset后,手动戳到返回的formset中的表单:
四处游玩,看看你能做些什么! |
|
|
4
7
最简单和最自然的方法是通过FOMSET
(灵感来自于 this Matthew Flanagan's snippet 以及Mitar在下面的评论,测试了在Django 1.11和2.0工作)。 |
|
|
5
0
你需要设置 明尼姆 内联和 验证有效 在表格集中。 https://docs.djangoproject.com/en/1.8/topics/forms/formsets/#validate-min
|