Peewee - модель с несколькими внешними ключами - PullRequest
0 голосов
/ 17 мая 2018

Я использую 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

Итак, мой вопрос: есть ли лучший способ?(Я уверен, что есть)

...