Как добавить дополнительный параметр к объекту Django при его создании?

#django

#django

Вопрос:

У меня есть модель Django, которая имеет много параметров, среди которых есть один, называемый ‘system’, который является ссылкой на объект типа ‘System’.

 class Format(models.Model):
   system = models.ForeignKey(System, on_delete=models.SET_NULL, null=True)
   petition_date = models.DateField(auto_now=True)
   resolution_date = models.DateField(null=True, default=None)
   ... other fields ...
  

Система может иметь значение null, но я бы хотел, чтобы это поле было таким же, как у пользователя, который создает объект Format.
Мой пользовательский объект выглядит следующим образом:

 class CustomUser(AbstractUser):
   current_system = models.ForeignKey(System, on_delete=models.SET_NULL, null=True, default=None)
   department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True, default=None)
  

У меня есть форма, которая успешно создает объекты формата. Тем не менее, я хотел бы знать способ сделать что-то подобное в моем CreateView:

 class FormatCreateView(LoginRequiredMixin, CreateView):
    """
           -----------------------Vista de crear nuevos articulos--------------------------
    """
    template_name = 'format_form.html'
    model = Format
    success_url = reverse_lazy("formats:formats")
    form_class = FormatUpdateForm

    def post(self, request, *args, **kwargs):
        form = FormatUpdateForm(request.POST)
        if form.is_valid():
            user = User.objects.get(id=self.request.user.id)
            format = self.object  # I'm pretty sure this is wrong and doesn't get the Format object that was just created
            format.system = user.current_system
            format.save(update_fields=['system'])
        return HttpResponseRedirect(reverse('formats:formats'))
  

Это, однако, не работает. Любые предложения будут оценены.

Обновить:

Кроме того, я забыл упомянуть, что при этом объект Format больше не создается после заполнения и отправки формы.

Комментарии:

1. Попробуйте с format = form.instance

2. Я забыл упомянуть, что объект Format также не создается, когда я переопределяю метод post подобным образом, но я не знаю, как при таком переопределении он больше не создает объект.

3. Вы можете использовать new_obj = form.save(commit=False) , затем изменить новый объект и сохранить его с помощью new_obj.save()