我在使用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
所以,我的问题是:有更好的方法吗? (我确定有)