Создать новый объект Программа и связанные с ним объекты Сегменты, используя данные из другой базы данных и поля, предоставленные пользователем
Я читаю записи из внешней базы данных с помощью get_context_data и отображаю их в списке. Когда пользователь выбирает запись - появляется форма, которая отображает данные выбранной записи через контекст.
Я хочу создать объект модели на основе того, что ввел пользователь, а также создать связанный объект(ы), используя контекстные данные, отображаемые на форме (не редактируемая информация).
Например:
You have a list of shows from the last month:
Show-Dec-31
Show-Dec-30
Show-Dec-29
.
.
Show-Dec-1
When you choose a show (say Show-Dec-25):
You get a form with
Name: Show-Dec-25 - User can change this if they want
Producer: _______ (required)
Editor: ________ (required)
Air Time: __:__:__ (required)
Run Time: __:__:__ (required)
Segments: (via context) (Display only)
1 Intro 00:01:00
2 Monologue 00:01:00
3 Dance Skit 00:09:00
4 Comedy Skit 00:09:00
Create Button Here
Когда пользователь нажимает кнопку create - создается новая программа в form_valid, в которой говоря:
def form_valid(self, form):
new_program = Program()
new_program.title = form.name
new_program.producer = form.producer
new_program.editor = form.editor
new_program.air_time= form.air_time
new_program.run_time= form.run_time
new_program.save()
Сегменты должны быть созданы - на основе только что созданного new_program id. Таким образом, если после создания new_program id был 44 - тогда будет создано четыре объекта сегментов - с ID программы 44. Внешним ключом в Segments является идентификатор программы. Если я прав - new_program.pk - это вновь созданный id, поэтому после сохранения я могу использовать его. Я не знаю, как получить контекстные записи для сегментов в функции valid_form, чтобы я мог создать новые объекты сегментов для каждого фрагмента шоу. Они прекрасно отображаются в шаблоне. Правильное ли это направление для использования функции form_valid? Я думал, что могу сказать:
for segs in context_segments:
new_seg = Segment()
new_seg.program = new_program.pk
new_seg.count = segs.count
new_seg.title = segs.title
new_seg.runtime = segs.run_time
new_seg.save()
Как получить контекстные_сегменты в функции form_valid?
Это было решено путем создания нового объекта для нужной мне модели. Пришлось переопределить form_valid, создать новый объект(ы) и сохранить их, используя контекст, который я передал в него (get_context_data - возвращает данные контекста). Также нужно было убедиться, что он перенаправляет на нужную мне страницу - если вернуть super(form_Create.self). form_valid(form), то в модели будет создано 2 записи, потому что я уже сохранил объект.