2017-04-13 7 views
0

thisによると、データベースに列挙型を格納したいとします。peeweeの静的テーブル

だから、私はGender列挙型とPersonモデルを持っているとしましょう。 Person.select().where(Person.gender == Gender.MALE) これは、hereのようにPersonでGenderFieldを作成することで実現できます。しかし、ジェンダーはデータベースにテーブルとして格納されず、PersonにはGenderテーブルへの外部キーが必要です。

私は静的な性別のデータをデータベースに格納し、次に列挙型の値でPersonテーブルをクエリできますか?

class Gender(Model): 
    label = CharField(primary_key=True) 

    class Meta: 
     database = db 


def create_schema(): 
    # Use an execution context to ensure the connection is closed when 
    # we're finished. 
    with db.execution_context(): 
     db.create_tables([Gender, ...], True) 
     if not Gender.select().exists(): 
      defaults = ['MALE', 'FEMALE', 'UNSPECIFIED'] 
      Gender.insert_many([{'label': label} for label in defaults]).execute() 

あなたが動的に新しい追加することを計画している場合、この例では、テーブルには、しかし、だろう性別を作るための唯一の理由:

答えて

0

あなたは、テーブルの作成プロセスの一環として、男女のテーブルを読み込むことができます実行時にジェンダーラベル。値のセットが固定されている場合は、私の意見は、あなたがこのような何かをやったほうが良いよです:

class Person(Model): 
    GENDER_MALE = 'M' 
    GENDER_FEMALE = 'F' 
    GENDER_UNSPECIFIED = 'U' 

    name = CharField() 
    gender = CharField() 

# Then, simply: 
Person.create(name='Huey', gender=Person.GENDER_MALE) 
Person.create(name='Zaizee', gender=Person.GENDER_UNSPECIFIED) 
+0

最初の1の問題点、それはStringly型付けである、と私は性別を毎回照会しなければならないということです、彼らの名前で。 もう1つは私にとってはうまくいかないでしょう。他の関係にも使われているので、私はジェンダーをテーブルにする必要があります。この馬鹿げた例では、トイレに性別を付けたいと思っています。 –

関連する問題