验证sqlalchemy中的列表修改

2024-05-18 14:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的SqLalCury模型,验证^ {< CD1>}字段:

from sqlalchemy import Column, String
from sqlalchemy.orm import validates
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects import postgresql
from sqlalchemy.ext.mutable import MutableList

Base = declarative_base()

class Test(Base):
    
    id = Column(Integer, primary_key=True)
    primary_email = Column(String(128))

    @validates('primary_email')
    def valid_email(self, key, value):
        if not '@' in value:
            raise ValueError(f"Invalid {key}: '{value}'")
        return value
        
    def __init__(self, email):
        primary_email = email 

它按预期工作,但现在我想添加另一列

secondary_email = Column(MutableList.as_mutable(postgresql.ARRAY(String(128))))

如何对secondary_email.append(email)调用执行验证

当我将'secondary_email'添加到validatesdecorator时,它只会在分配操作上被触发,比如

self.secondary_email = ['example@me.com']

我相信这是可以通过自定义类实现的,但我想知道是否有更简单、更通用的解决方案


Tags: keyfromimportselfbasestringsqlalchemyvalue

热门问题