У меня есть модель, где одно из обязательных полей - это пользователь, который в настоящий момент подписан. Я делаю следующее при создании новой записи для модели:Установка текущего пользователя для поля требуемой модели
views.py
def post(self, request):
bound_form = self.form_class(request.POST)
if bound_form.is_valid():
new_position = bound_form.save()
Проблема заключается в том, что это работает только когда пользователь выбрал их сам по форме. Мне нужен способ установить текущего пользователя автоматически и просто не отображать поле пользователя в форме. Я попытался это:
def post(self, request):
bound_form = self.form_class(request.POST)
if bound_form.is_valid():
new_position = bound_form.save(commit=False)
new_position.user = request.user
new_position.save()
Однако это не работает, потому что bound_form
не является действительной, поскольку она отсутствует у пользователя, который является обязательным полем на модели. Где еще можно установить пользователя, прежде чем пытаться сохранить форму? В шаблоне или методе get представления?
Вы должны сделать именно то, что вы сделали, за исключением того, что вам необходимо исключить поле пользователя из формы в первую очередь. –
Im не уверен, что я следующий. В настоящее время я показываю только те поля, которые я хочу, чтобы пользователь заполнил (т. Е. Я удалил поле пользователя). Другими словами, ... все работает, если пользователь сам выбирает себя, но если я удалю поле, чтобы они не могли выбрать себя, я не могу сохранить форму даже с указанным выше кодом. – darkpool
Вы должны использовать 'exclude = ('user',)' в 'class Meta:' вашей 'формы' – trantu