多个块中的必填字段
Posted
技术标签:
【中文标题】多个块中的必填字段【英文标题】:Required fields in multiple blocks 【发布时间】:2020-09-02 20:31:57 【问题描述】:我有两个数据库块:A 和 B。我还有 3 个选项卡:
第一个选项卡包含块 A 中的项目, 第二个有块 B 中的项目, 第三个有 A 块的物品两个块中的所有字段都是必需的。
我的问题是我想按选项卡的顺序输入字段,但在我的情况下,因为当我想转到第二个选项卡时需要字段,所以我需要进入第三个才能输入所有字段,然后第二个。
如何解决?
【问题讨论】:
【参考方案1】:当您从第一个选项卡(基于表/块 A)导航到第二个选项卡(基于表/块 B)时,表单会执行验证,并且 - 并非所有属于表 A 的必填字段(那些放置到第三个选项卡)未填充 - 表单引发错误。
一种选择是从属于表 A 并放置到第三个选项卡的所有字段中删除“必需”属性。这意味着您必须检查它们是否是手动填充的,即编写一个可以执行此操作的触发器。哪一个? PRE-INSERT
和 PRE-UPDATE
可能是您的选择。代码看起来像
if :tab3.field1 is null or
:tab3.field2 is null or ...
then
message('Not all fields have been populated on tab 3');
raise form_trigger_failure;
end if;
或者,重新排列布局
将字段从选项卡 3 移动到选项卡 1,或 切换标签 2 和标签 3 的位置或者,如果过程是这样的,可能是您的数据模型设置错误。您所描述的看起来像是某种“主从”关系,其中表 A 充当“主”,表 B 充当“详细”。您不应部分填充 master ,尤其是在需要其所有列时。如果这就是问题所在,那么它确实是一个问题,因为更改数据模型并不一定很简单,因为它会影响很多事情。
【讨论】:
谢谢,这确实是个问题。我发现有人将表单属性验证设置为表单范围并将字段的属性(必需)设置为 false,然后将字段设置为必需并再次将表单验证设置为项目范围。他为什么这样做 不客气。他们为什么这样做?好吧,与大多数问题一样,这有几个选项可能会有所帮助。哪一个是最好的”?我不知道,你应该尝试它们并选择最适合你的。以上是关于多个块中的必填字段的主要内容,如果未能解决你的问题,请参考以下文章
将值传递给不是来自 Django ModelForm 中的输入的必填字段