Django外键Null和unqiue togehter,加上小写

时间:2017-08-10 11:59:54

标签: django django-models django-validation

我有一个类别模型,它有一个外部自身,可以有Null值。

我知道当外键为Null时,唯一的一起不起作用。另外,我想检查它们是否重复,唯一一致无关紧要的情况(低级,高级,组合)以及父级和子级没有相同的名称。

我在网站上发现了一些部分解决方案但不是很好,并没有涵盖我的所有情况。另一件事,我在模型上做了干净,因为我在Admin中有类别,因此我无法控制任何形式或视图。

现在我在'name__iexact'上有一个错误,并且不明白为什么因为'name == self.name'有效。

c[i]

self.pk = pk;我检查一下,因为在更新的情况下,它会找到我编辑的当前实例并抛出ValidationError,这是不行的。

c

name__iexact出错:

"NameError: name '_' is not defined"

2 个答案:

答案 0 :(得分:1)

试一试,并填写完整的错误堆栈

exists = self.__class__.objects.exclude(pk=self.pk).filter(name__iexact=self.name).exists()

答案 1 :(得分:0)

如果要检查相同的字符串值,我建议使用“is”运算符:

if self.name.lower() is self.parent.lower()

通过这种方式,您正在测试它们是否共享相同的内存地址,这很好,因为Python在一个内存地址存储具有相同值的字符串。