首页 > 解决方案 > 如何在 peewee 模型上添加唯一的不敏感约束?

问题描述

我想使用 peewee orm 和 sqlite 数据库为以下模型添加一个唯一的不敏感约束

import peewee as p

db = p.SqliteDatabase(':memory:')

class Player(p.Model):
   name = p.CharField()
  
   class Meta:
      database = db

我想防止在表格中添加“乔”和“乔”作为玩家姓名。由于该字段区分大小写,因此唯一的约束是不够的。

谢谢你的想法!

标签: sqlitepeewee

解决方案


您可以在 Meta.constraints 列表中指定任意约束:

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

推荐阅读