我有一个分类模型,它有一个外部本身,可以有空值。Django外键空和unqiue togehter,加小写字母
我知道当外键为空时唯一的一起不起作用。此外,我想检查它们是否重复,独一无二的情况下(低,高,组合),父母和孩子不具有相同的名称。
我在网站上发现了一些不完整的解决方案,但不是很好,并没有涵盖我所有的情况。另一件事,我做模型干净,因为我将在管理中有类别,所以没有形式或视图在我的控制下。
现在,我在'name__iexact“上有一个错误,不明白为什么因为'name == self.name'起作用。
"NameError: name '_' is not defined"
self.pk = PK;我检查这是因为在更新的情况下,它会找到我编辑并拖曳ValidationError的当前实例,这是不正确的。
class Category(models.Model):
name = models.CharField(max_length=255)
parent = models.ForeignKey('self', blank=True, null=True, verbose_name='parent category')
description = models.TextField()
def __str__(self):
return self.name
def clean(self):
cleaned_data = super().clean()
if not self.parent:
exists = self.__class__.objects.filter(~Q(pk=self.pk), name__iexact=self.name).exists()
if exists:
raise ValidationError(_('Duplicate Category Name with No Parent'), code='duplicate_no_parent')
if self.name.lower() == self.parent.name.lower():
raise ValidationError(_('Category Name the same as Parent Category Name'), code='duplicate_as_parent')
return cleaned_data
误差name__iexact:
Exception Type: NameError
Exception Value:
name '_' is not defined
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
response = get_response(request)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\contrib\admin\options.py", line 551, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\utils\decorators.py", line 149, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\views\decorators\cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\contrib\admin\sites.py", line 224, in inner
return view(request, *args, **kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\contrib\admin\options.py", line 1508, in add_view
return self.changeform_view(request, None, form_url, extra_context)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\utils\decorators.py", line 67, in _wrapper
return bound_func(*args, **kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\utils\decorators.py", line 149, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\utils\decorators.py", line 63, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\contrib\admin\options.py", line 1408, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\contrib\admin\options.py", line 1440, in _changeform_view
if form.is_valid():
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\forms\forms.py", line 183, in is_valid
return self.is_bound and not self.errors
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\forms\forms.py", line 175, in errors
self.full_clean()
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\forms\forms.py", line 386, in full_clean
self._post_clean()
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\forms\models.py", line 408, in _post_clean
self.instance.full_clean(exclude=exclude, validate_unique=False)
File "D:\DevEnv\PythonEnv\Django\lib\site-packages\django\db\models\base.py", line 1234, in full_clean
self.clean()
File "D:\DevProj\Learn\Django\ph_work\categories\models.py", line 21, in clean
raise ValidationError(_('Duplicate Category Name with No Parent'), code='duplicate_no_parent')
NameError: name '_' is not defined
: \ forms.py “线路183,在is_valid 回报self.is_bound而不是self.errors \形式\ forms.py”,线路175,在错误 self.full_clean( )forms \ forms.py“,第386行,在full_clean中 self._post_clean() \ forms \ models.py”,第408行,在_post_clean中 self.instance.full_clean(exclude = ()复制代码清除 中的第20行self.clean() \ categories \ models.py“,第20行。没有父'的类别名称'),代码='duplicate_no_parent') NameError:名称'_'未定义 – user3541631
请将其作为代码 –
添加进来'从django.utils.translation import ugettext as _' –