我想使用带有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)')]