Я новичок в программировании Django и Python, и сейчас я очень много борюсь :(!! Я создал форму обновления/редактирования с помощью модели Django формы, но он просто не заполняет поля формы и не отправляет их в базу данных одновременно.Как заполнить форму обновления Django и записать ее обратно в базу данных
Я думаю, что проблема здесь: «form = AdvertisingForm (request.POST или None, request.FILES или None , экземпляр = форма)»
Без "request.POST или None, request.FILES или None", это не предварительно заполнить поля, но не обновляет базу данных ...
Это мой views.py:
def update_advert(request, id):
if not request.user.is_authenticated():
return render(request, 'forum/login.html')
else:
form = get_object_or_404(Advert, pk=id)
if request.method == 'POST':
form = AdvertForm(request.POST or None, request.FILES or None, instance=form)
if form.is_valid():
form = form.save(commit=False)
form.user = request.user
form.save()
return redirect('forum:user_account')
else:
form = AdvertForm(instance=form)
context = {'form': form}
return render(request, 'forum/update_advert.html', context)
В настоящее время он выглядит так, когда я пытаюсь открыть форму обновления:
opening the form --> not prepopulated :(
Спасибо. Это действительно помогло мне лучше понять мой код! Но он по-прежнему не показывает предварительно заполненные поля с ** «request.POST или None, request.FILES или None» ** ... Когда у меня просто это выглядит так: ** «form = AdvertisingForm (instance = advert_obj) "** он покажет мне предварительно заполненные поля, но не запишет их обратно в базу данных ... – 2cool4school
Не могли бы вы объяснить, что вы подразумеваете под« шоу »? Код, 'form = AdvertisingForm (request.POST или None, request.FILES или None, instance = advert_obj)', который запускается, когда вы делаете запрос 'POST', должен ОБНОВЛЯТЬ текущую' advert_obj'. Он не будет показывать эти поля снова, потому что вы перенаправляетесь на 'forum: user_account'. –
Предложение 'else' (когда вы делаете запрос' GET'), будет иметь данные, предварительно заполненные в поля формы, как вы упомянули. Это работает правильно. НО эта часть не должна вообще сохраняться в базе данных, потому что мы просто извлекаем данные. Запрос 'POST' отвечает за сохранение (в вашем случае, обновление текущего' advert_obj') –