#django #django-views
#джанго #django-просмотры
Вопрос:
В models.py сохранение файлов:
class Story(models.Model):
title = models.CharField(max_length=255)
text = models.TextField()
author = models.ForeignKey(User)
В forms.py файл содержит:
class StoryForm(forms.Form):
class Meta:
model = Story
В views.py файл содержит:
def story(request):
if request.method == 'POST':
story_form = StoryForm(request.POST)
if story_form.is_valid():
story_form.cleaned_data['author'] = request.user.id
Проблема здесь должна заключаться в одном из этих 4 вариантов:
-
Story.author должен быть экземпляром «User», потому что объекты в Form.cleaned_data dict преобразуются в объекты python методом to_python()
-
Форма.cleaned_data еще не определена
-
Form.cleaned_data должны быть заполнены только методами Form.clean() или
Form.clean_<field_name>()
-
Все в порядке
Мое лучшее предположение было 3, потому что я думал, что 2 недопустимо, потому что cleaned_data — это предопределенная функция, и я не мог по-настоящему понять значение 1. Какая из 4-х является реальной проблемой?
Комментарии:
1. Зачем вам изменять
cleaned_data
после вызова.is_valid()
?2. @Alex Код на самом деле не мой, я просто пытаюсь выяснить, что с ним не так.
3. Номер 3, в данном случае 🙂
4. @Alex Почему это?
5. Потому что, если вы хотите передать автора для этой формы модели, вы либо переопределяете форму
__init__
и передаете ее вместеrequest.POST
, либо передаете ее непосредственноrequest.POST
через скрытое поле формы, которое хранитrequest.user.id
. Слишком много неизвестных относительно желаемого потока, чтобы указывать на конкретное решение.