Создание записи дочерней таблицы при создании новой записи родительской таблицы
У меня эта модель:
В этом решении, когда я создаю новый Profile
, создается новый Rank
. Это работает. Однако, когда я создаю новую запись Command
, требуется новая запись CommandPositions
. Я попробовал сделать это так же, как и отношения Profile
/Rank
, но выдает ошибку, говоря, что ее нет.
Почему Profile
/Rank
работает, а Command
/CommandPositions
говорит, что я не могу этого сделать?
Любая мудрость будет высоко оценена. Спасибо!
Рассмотрим два ваших разных случая:
rank = Rank.objects.create(user=self, longrank='o1', shortrank='o1', branch='r')
rank.save()
CommandPositions = CommandPositions.objects.create(command=self, name="CO", responsibility='Commanding Officer')
CommandPositions.save()
Заметили что-нибудь необычное?
Это неуловимо, и здесь чего-то не хватает:
class CommandPositions(models.Model):
Итак, по сути, ваш код заключается в том, что вы пытаетесь привязать переменную (CommandPositions
переменная в .save()
) к имени, которое уже используется (CommandPositions
определение класса). Интерпретатор Python думает, что вы не в себе, поэтому он игнорирует это, потому что в противном случае произойдет много других плохих вещей.
Исправление
# Or pick any variable name you want
# as long as it's not something already in use in this scope
command_positions = CommandPositions.objects.create(command=self, name="CO", responsibility='Commanding Officer')
command_positions.save()