Я открыл предыдущий выпуск SO, касающийся многих полей, которые не сохраняются в Django Createview здесь. Django CreateView с ManyToManyField После устранения неисправностей большую часть сегодняшнего дня я обнаружил, что этот код действительно работает:
class CreateAuthorView(LoginRequiredMixin,CreateView):
def form_valid(self, form):
instance = form.save(commit=False)
instance.save()
instance = form.save()
if instance.access_level == "Custom":
obj = NewAuthor.objects.get(secret=instance.name)
obj.access.add(instance.created_by.id)
print(instance.created_by.id)
print(obj.access.all())
instance = form.save()
obj.save()
form.save_m2m()
instance = form.save()
return super(CreateAuthorView, self).form_valid(form)
Когда я запускаю print(obj.access.all())
, я вижу в своей консоли, что
obj.access.add(instance.created_by.id)
Строка кода на самом деле делает именно то, что я хочу ... она добавляет созданный_байта в поле доступа (ManyToManyField), которое я определил в моей модели.Однако, когда запись фактически обрезается, в поле доступа добавляются только те значения, которые пользователь выбрал в форме, и созданный_байк никогда не попадает в базу данных.
Должен ли я переопределить CreateView где-нибудь еще, чтобы созданный объект вступил в силу?Похоже, что мое первоначальное обновление в form_valid перезаписывается, что я подозреваю.На самом деле я доказал это, потому что мое обновление на самом деле находится в моей консоли, но не попадает в базу данных.Заранее спасибо за любые мысли о том, как лучше всего решить.