簡體   English   中英

peewee中的靜態表

[英]Static table in peewee

我想存儲在數據庫中的枚舉,根據這個

假設我們有一個Gender枚舉和一個Person模型。 我想要做一個選擇像Person.select().where(Person.gender == Gender.MALE)這可以通過所描述的人創造一個GenderField來實現 但是性別不會以表格形式出現在數據庫中,我希望此人對Gender表格具有外鍵。

那么如何將靜態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()

但是,在此示例中使Gender成為表格的唯一原因是,如果您計划在運行時動態添加新的Gender標簽。 如果值的集合是固定的,那么我認為您最好這樣做:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM