2016-08-28 4 views
1

два случая:PeeWee настраиваемого поля - определить допустимые значения

1.) Я хотел бы, чтобы определить атрибут (VAL), который может принимать целые числа 0, 1 или 2 только.

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

2.) Я хотел бы, чтобы определить атрибут (VAL), который может принимать только определенные строки, например, [ "клубничного", "персик", "яблоко"]

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

Можно ли реализовать такое ограничение с помощью peewee?

Благодарим за помощь!

MUFF

ответ

1

Объекты IntegerField и т.д. классы, и могут быть подклассы (documentation):

Классы должны определить db_value для преобразования из питона в базу данных, и 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