相关模型和验证

Posted

技术标签:

【中文标题】相关模型和验证【英文标题】:associated models and validating 【发布时间】:2013-01-23 15:12:05 【问题描述】:

每 3 个人在我的应用中创建 1 个页面。所以每个PagehasManyUser

我已经定义了一些检查用户信息的验证规则。 (如电子邮件、电话和邮政编码检查器。)但每个页面(所有者)只需要一个电子邮件和电话号码。所以只有第一个用户需要电子邮件和电话。 (其他用户不必填写。第一个用户必须这样做。)

所以,我必须在验证第一个用户数据后删除一些验证规则。但我不知道如何使用saveAll (saveAssociated) 方法。

【问题讨论】:

【参考方案1】:

您可以通过添加来跳过特定字段的验证

unset($this->User->validate['field_name']);

validates()save() 调用之前。

【讨论】:

我知道,而且我用过很多次。但是这里我们没有save 方法。这是saveAll 如果您使字段无效,则调用哪种方法来保存数据都没有关系。该字段将不会被验证,因为(该字段的)验证规则不再存在。所以这也适用于saveAll saveAll,一次验证并保存所有用户数据。所以我不能在验证第一个用户后取消设置验证规则。 在这种情况下,您应该在保存之前验证数据,然后使用$this->User->saveAll($this->request->data, array('validate' => false));【参考方案2】:

我必须通过将第一个用户电子邮件和电话号码复制给其他用户来管理它(并设置一些变量以保留默认电子邮件和电话)。然后,验证请求数据。然后恢复其他 2 个用户的默认值。

欢迎提出其他建议。

【讨论】:

以上是关于相关模型和验证的主要内容,如果未能解决你的问题,请参考以下文章

相关领域的 Django 模型验证

Django 模型 - 相关对象验证

了解tf.keras中模型训练验证的相关方法

Django 1.8.3 - 具有相关对象的模型字段验证

R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练通过显著性进行变量筛选(删除相关性较强的变量)构建多变量模型转化为分类模型模型评估

交叉验证