我想实现一个类别模型,其中名称有unique=True
, 但实际上我仍然可以添加具有不同情况的相同类别名称。django模型不区分大小写Charfield
即我有一个名为食品 我仍然能够增加食品,粮食,食品类,食品类
是其背后的任何理念?或者这是一项正在进行的工作。
因为在现实世界中,如果我想到类别食品,它总是食物,不管它曾经提及过自己的情况。
预先感谢您看看这个。
我想实现一个类别模型,其中名称有unique=True
, 但实际上我仍然可以添加具有不同情况的相同类别名称。django模型不区分大小写Charfield
即我有一个名为食品 我仍然能够增加食品,粮食,食品类,食品类
是其背后的任何理念?或者这是一项正在进行的工作。
因为在现实世界中,如果我想到类别食品,它总是食物,不管它曾经提及过自己的情况。
预先感谢您看看这个。
要回答我的问题:
我发现我可以对我的模型清洁方法。所以我添加
class Category(models.Model):
name = models.CharField(max_length=200, unique=True)
def clean(self):
self.name = self.name.capitalize()
它正利用的第一个字母,然后由该save
方法,它调用的方法validate_unique
提高错误处理。
将列设置为不区分大小写的排序规则应解决此问题。您可能需要在SQL级别执行此操作。
您的意思是将列设置为“区分大小写”?问题是如何在Django中做到这一点。 – Sarang 2015-05-14 09:22:16
这对我来说非常有用。谢谢.. :) – suhailvs 2013-10-05 04:41:59
2017:工作得很好! – zerohedge 2017-11-08 08:13:01