Django formset не сохраняется с определенным кодом

У меня есть вспомогательная функция для сохранения набора форм для модели Fields. Эта функция не сохраняет никаких записей, пока я не удалю определенный фрагмент кода.

код, который не сохраняется:

@transaction.atomic
def update_fields_and_fields_group(formset, fg_id, fg_name, ordered_ids):
    fg = FieldsGroup.objects.get(pk=fg_id)
    fg.name = fg_name
    fg.save()

    # store fields as dictionary
    fields_list = Fields.objects.filter(fields_group__pk=fg_id)
    fields_dict = {}
    for f in fields_list:
      fields_dict[f.id] = f
    num_fields = len(fields_dict)
    
    # save values
    instances = formset.save(commit=False)
    print(instances)
    for fields in instances:
        # populate order for new fields with order at the end
        if not fields.id:
            fields.order = num_fields + 1
        # populate FK
        fields.fields_group_id = fg_id
        print(fields.id)
        fields.save()

    # save order
    current_order = 1
    for id in ordered_ids:
        # id is none for new rows
        if id == 'None':
          continue
        fields = fields_dict[int(id)]
        fields.order = current_order
        current_order += 1
        fields.save()

Код, который сохраняет:

@transaction.atomic
def update_fields_and_fields_group(formset, fg_id, fg_name, ordered_ids):
    fg = FieldsGroup.objects.get(pk=fg_id)
    fg.name = fg_name
    fg.save()

    # store fields as dictionary
    # fields_list = Fields.objects.filter(fields_group__pk=fg_id)
    # fields_dict = {}
    # for f in fields_list:
    #   fields_dict[f.id] = f
    # num_fields = len(fields_dict)
    
    # save values
    instances = formset.save(commit=False)
    print(instances)
    for fields in instances:
        # populate order for new fields with order at the end
        # if not fields.id:
        #     fields.order = num_fields + 1
        # populate FK
        fields.fields_group_id = fg_id
        print(fields.id)
        fields.save()

    # save order
    # current_order = 1
    # for id in ordered_ids:
    #     # id is none for new rows
    #     if id == 'None':
    #       continue
    #     fields = fields_dict[int(id)]
    #     fields.order = current_order
    #     current_order += 1
    #     fields.save()

Не вмешивается ли вызов Fields.objects.filter каким-то образом в логику сохранения?

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