如何在peewee模型上添加唯一的不敏感约束?



我想使用带有sqlite数据库的peewee form为下面的模型添加一个唯一的不敏感约束

import peewee as p
db = p.SqliteDatabase(':memory:')
class Player(p.Model):
name = p.CharField()

class Meta:
database = db

我想防止在表中添加'joe'和'joe'作为球员名。由于字段区分大小写,唯一约束是不够的。

谢谢你的建议!

你可以在Meta中指定任意的约束。约束列表:

from peewee import *
db = SqliteDatabase(':memory:')
class K(Model):
key = TextField()
class Meta:
constraints = [SQL('UNIQUE ("key" COLLATE NOCASE)')]
database = db
db.create_tables([K])
K.create(key='k1')
K.create(key='K1') # Fails

作为参考,在两个字段上创建不区分大小写的唯一约束的语法为:

class Group(BaseModel):
name = CharField()
category = CharField()
class Meta:
constraints = [SQL('UNIQUE("name" COLLATE NOCASE, "category" COLLATE NOCASE)')]

相关内容

  • 没有找到相关文章

最新更新