我有一个模型与ManyToManyField类似(模型Word也有一种语言):
class Sentence(models.Model):
words = models.ManyToManyField(Word)
language = models.ForeignKey(Language)
def clean(self):
for word in self.words.all():
if word.language_id != self.language_id:
raise ValidationError('One of the words has a false language')
当尝试添加新句子时(例如通过django admin),我得到了'Sentence' instance needs to have a primary key value before a many-to-many relationship can be used
。这意味着我在保存self.words之前无法访问它,但这正是我想要做的。有什么办法可以解决此问题,以便你仍然可以验证此模型?我真的很想直接验证模型的字段。
我发现了许多与此异常有关的问题,但找不到解决我的问题的帮助。我将不胜感激任何建议!
无法在模型的clean方法中进行此验证,但是你可以创建一个模型表单来验证的选择words
。
from django import forms
class SentenceForm(forms.ModelForm):
class Meta:
model = Sentence
def clean(self):
"""
Checks that all the words belong to the sentence's language.
"""
words = self.cleaned_data.get('words')
language = self.cleaned_data.get('language')
if language and words:
# only check the words if the language is valid
for word in words:
if words.language != language:
raise ValidationError("The word %s has a different language" % word)
return self.cleaned_data
然后,你可以自定义Sentence
模型管理员类,以在Django管理员中使用表单。
class SentenceAdmin(admin.ModelAdmin):
form = SentenceForm
admin.register(Sentence, SentenceAdmin)
Enforce模块用于验证数据。对于使用以前的验证器的用户,还可以继续使用,它们中的一部分整合到了enforce,剩余部分还没有。推荐你开始使用orm.enforce来取代orm.validators。可用的验证器的列表请见node-enforce。 unique验证器也构建于ORM中,可以这样来访问: name: orm.enforce.unique("name already taken!")
这个问题已经被问了很多次了,即使是在经历了所有的解决方案之后,我也无法让hibernate validator工作。 控制器类:- servlet-上下文:- 依赖关系:- 验证类:- 我错过了什么?
验证模型数据 需要在 Model 添加 Schema (模式 与 mongoose Schema 相同概念),确保数据库能够正确存储. 一个 Model 数据可以在它进入数据存储之前进行验证, 确保后端架构程序. 添加 schema 到 Model 使用验证方法 本地化验证消息(中文) 添加模式(schema) 到模型 验证数据的一种方法是创建一个模型模式(Model Schema), Loopb
但是,我必须验证manager和operator的id是否有效,也就是说,我将验证user表中是否有匹配的id。 所以我想知道如何实现这种验证? 更新1:使用验证器
我正在训练一个数据集,然后在其他数据集上测试它。
我有一个相对大的数据: 超过37万个观测数据,分类因变量有250个水平,10个自变量包括数值变量和分类变量。 下面是我的代码: 有人告诉我包'CV tools'或'cert'可以预形成k-folds CV,但我仍然不能成功地执行这些包或函数。