Django: Заполните идентификатор пользователя при сохранении модели

Попытайтесь установить animation-duration: 0s

45
задан Matt Ball 31 August 2012 в 18:46
поделиться

2 ответа

Если вы хотите, чтобы что-то работало как в админке, так и где-либо еще, вы должны использовать настраиваемую форму модели. Основная идея состоит в том, чтобы переопределить метод __ init __ , чтобы он принял дополнительный параметр - запрос - и сохранил его как атрибут формы, а затем также переопределить метод сохранения для установки идентификатора пользователя перед сохранением в базе данных.

class MyModelForm(forms.ModelForm):

   def __init__(self, *args, **kwargs):
       self.request = kwargs.pop('request', None)
       return super(MyModelForm, self).__init__(*args, **kwargs)


   def save(self, *args, **kwargs):
       kwargs['commit']=False
       obj = super(MyModelForm, self).save(*args, **kwargs)
       if self.request:
           obj.user = self.request.user
       obj.save()
       return obj
34
ответ дан 26 November 2019 в 21:01
поделиться

Метод save из forms.ModelForm возвращает сохраненный экземпляр.

Вы должны добавить последнюю строку в MyModelForm:
...
return obj

Это изменение необходимо, если вы используете общие представления create_object или update_object.
Они используют сохраненный объект для перенаправления.

1
ответ дан 26 November 2019 в 21:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: