Создать новый объект Программа и связанные с ним объекты Сегменты, используя данные из другой базы данных и поля, предоставленные пользователем

Я читаю записи из внешней базы данных с помощью 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 записи, потому что я уже сохранил объект.

Вернуться на верх