2012-05-08 33 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驗證。

相關問題