2012-05-08 25 views
0

我有一个简单的模型如下,我有一个游戏列表,我希望所有玩家从游戏列表中分配一个且只有一个游戏。我将如何在sqlalchemy中做到这一点。 截至目前,我正在使用烧瓶sqlalchemy,但问题不限于flask-sqlalchemy。从列表中为sqlalchemy的数据库实体分配列表元素

games = ['soccer', 'hockey', 'baseball', 'cricket', 'basketball'] 

from flask.ext.sqlalchemy import SQLAlchemy 

class Gamer(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    team_name = db.Column(db.String(80)) 
    game_name = db.Column(db.String(80)) 
    game = db.Column(db.String(80), i want only games from the list of games) 

类似的django功能被发现here

回答

0

首先,你所提到的django功能并不是真的类似到你列出的模型。原因是GamermodelSimpleForm是UI form

然而,下面是少数方法可以验证model

1)Games创建一个单独的tabbe,添加值行,并创建GamerGame一个N-to-1关系。这是可读的,将验证您的数据对企业和DB两级

class Game(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(80)) 

class Gamer(db.Model): 
    # ... 
    game_id = db.Column(db.Integer, ForeignKey('game.id')) 
    game = relationship(Game) 

2)创建并使用simple validator

from sqlalchemy.orm import validates 
class Gamer(db.Model): 
    # ... 
    @validates('game') 
    def validate_game(self, key, address): 
     assert address in games 
     return address 

编辑-1:或者,采取看看The Enum Recipe。但是这又是一个模型层面,而不是UI验证。

相关问题