-1

次のような単純なモデルがあります。ゲームのリストがあり、すべてのプレーヤーにゲームのリストから 1 つだけのゲームを割り当ててもらいます。どうすればsqlalchemyでそれを行うことができますか. 現在、フラスコの 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 機能は、こちらにあります

4

1 に答える 1

0

まず第一に、あなたが言及しているdjangoの機能は、リストしたモデルと実際には類似していません。その理由Gamerは、modelそれSimpleFormが UI であるということですform

ただし、以下は を検証できるいくつかの方法ですmodel

1) の別のタブを作成しGames、値を行として追加し、からへのN-to-1関係を作成します。これは読み取り可能であり、ビジネス レベルと DB レベルの両方でデータを検証します。GamerGame

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)シンプルなバリデーターを作成して使用する

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

edit-1:あるいは、The Enum Recipeを見てください。ただし、これはモデル レベルであり、UI 検証ではありません。

于 2012-05-09T07:34:05.133 に答える