python - peewee 自定义字段 - 定义允许值

标签 python python-3.x peewee

两种情况:

1.) 我想定义一个只能接受整数 0、1 或 2 的属性 (val)。

class Trinary(Model):
    """val should accept the values 0, 1 or 2 only"""
    val = IntegerField()

2.) 我想定义一个只能接受特定字符串的属性 (val),例如 ["strawberry", "peach", "apple"]

class Fruit(Model):
    """val should accept the values "strawberry", "peach" or "apple" only """
    val = ???

是否可以使用 peewee 实现此类限制?

感谢您的帮助!

手袋

最佳答案

对象 IntegerField 等是类,可以被子类化 ( documentation ):

这些类应该定义 db_value 来从 python 转换为数据库, 和 python_value 反过来

class TrinaryField(IntegerField):
        def db_value(self, value):
            if value not in [0,1,2]:
                raise TypeError("Non-trinary digit")
            return super().db_field(value)  # call 

关于python - peewee 自定义字段 - 定义允许值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195189/

相关文章:

javascript - 在高度受限的环境中无需安装 python 即可运行 python 代码

python - 似乎无法让 Python、Peewee、pymysql 和 MySql 数据库正常工作,没有 'returning_clause' 错误

python - 仅使用线函数绘制分形树

python - 更改具有重复列标题的数据框列中的数据类型

python - 我们正在使用tesseract进行平移OCR,但无法检测到名称和平移号等详细信息

python - 从文本文件创建用户名

python - 带有批量插入的 peewee 进入 sqlite db 非常慢

python - 属性错误: 'list' object has no attribute '_meta'

python - numpy 对每一行进行排序并检索第 k 个元素

python - ruby 中 python 的 __file__ 相当于什么?