Создание записи дочерней таблицы при создании новой записи родительской таблицы

У меня эта модель:

В этом решении, когда я создаю новый 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()
Вернуться на верх