目前,我有一个Django项目,其中包含一个称为Event
的模型,该模型具有多个属性,其中之一是full_name
。
from django.db import models
class Event(models.Model):
description = models.CharField(blank=False, max_length=200)
full_name = models.CharField(blank=False, null=True, max_length=200, unique=True)
我希望实现的目标是防止用户创建两个事件,一个名为
MyEvent
,另一个名为myevent
,因此我希望名称不区分大小写。此外,我来自一个有一些奇怪字母的国家,比如š
。用户习惯于计算机系统不支持这些字母,因此我还想防止存在两个事件,一个名为šoo
,另一个名为soo
。基本上,我有一个函数
myfunction
,希望有一个模型约束,使得对于模型的每个实例,值myfunction(instance.full_name)
都是唯一的。我的第一个想法,有点可行,是使用一个具有清理全名函数的模型表单:
def clean_full_name(self):
return myfunction(self.cleaned_data.get('full_name'))
这个方法有效。然而,现在我有一个视图,想要显示所有事件的全名,在这里我想要显示原始名称。使用我的方法,这是不可能的(函数只能单向操作)。是否有更简洁的解决方案?
if MyModel.objects.filter(full_name__iexact=thestring).exists():raise ValidationError; return the_string
? - n__o