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
каким-то образом в логику сохранения?