Peewee - 具有多个外键的模型

时间:2018-05-16 21:18:03

标签: python peewee

我在使用sqlite的python中使用peewee。作为所有这些的新手,我需要一些帮助,以正确的方式在peewee中建立模型。

我有三个模型:Shot,Asset和Task。

镜头和资产可以有多个任务。任务名称必须一致,例如,Shot和Asset都可以有一个名为'anim'的不同任务。我必须跟踪每个任务的父级。

我首先尝试以这种方式设置模型(相关代码):

class Shot(BaseModel):
    name = CharField()

class Asset(BaseModel):
    name = CharField()

class Task(BaseModel):
    name = CharField()
    shot = ForeignKeyField(Shot, null=True, backref="shot_tasks")
    asset = ForeignKeyField(Asset, null=True, backref="asset_tasks")

这可行,我可以这样做:

for task in shot.shot_tasks: #or asset.asset_tasks
    print task.name

然后我出于某种原因不喜欢它并尝试了这个:

class Task(BaseModel):
    name = CharField()

class ShotTask(Task):
    shot = ForeignKeyField(Shot, backref='tasks')

class AssetTask(Task):
    asset = ForeignKeyField(Asset, backref='tasks')

我认为基本上是相同的,但是这样,我可以命名我的backrefs'任务',我可以这样做:

for task in shot.tasks: #or asset.tasks
    print task.name

所以,我的问题是:有更好的方法吗? (我确定有)

0 个答案:

没有答案