0
私はクラスがあるとします: フィールドはspecial_pin
ですが、nullにすることはできますが、特定のコンテキストではnullにすることはできません。検証関数(validates_pin
)を書いて、そのフィールドを検証したいと思います。ただし、special_pin
フィールドがnullの場合、検証機能は実行されません。nullフィールドでsqlalchemy.orm.validatesを使用するには?
from sqlalchemy.orm import validates
class User(db.Model):
user_type = db.column(db.String, nullable=False)
special_pin = db.column(db.String)
@validates('special_pin')
def validates_pin(self, key, field):
if self.user_type == 'special'
assert field, 'special user must have special pin'
はあなたが決して 'special_pin'属性に割り当てるいないことを意味しています:あなたのユースケースは、テーブルレベルcheck constraintのために良いフィットのように見えるでしょうか? [mcve]を含めます。 DBがそれらをサポートしている場合、あなたのケースはチェック制約に適しているようです。 –
はい、それは私が意味するものです。私はpostgreSQLを使用していますが、どのように制約を作成するべきですか? – tt123456