Я использую peewee в python с sqlite.Будучи новичком во всем этом, мне нужна помощь в правильной настройке моделей.
У меня есть три модели: Shot, Asset и Task.
Кадры и активы могутесть несколько задач.Имена задач должны быть согласованными, например, у Выстрела и Актива могут быть разные задачи с именем «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')
, что, по-моему, в принципе одно и то же, но таким образом, я могу назвать «задание» своих обратных ссылок, и я могуdo:
for task in shot.tasks: #or asset.tasks
print task.name
Итак, мой вопрос: есть ли лучший способ?(Я уверен, что есть)