У меня есть две модели форм, одна для типов уведомлений и одна для настроек конфиденциальности. Оба показывают значения по умолчанию, а не то, что сохраняется в базе данных. Как сделать так, чтобы в форме отображался выбор, хранящийся в базе данных, а не значения по умолчанию? Пример. Предположим, пользователь выбрал для конфиденциальности «Прямое сообщение» «Друзья и подписчики». Когда они снова посещают страницу параметров конфиденциальности после сохранения изменений, вместо отображения того, что находится в базе данных, отображается «Открыть». Я попытался присвоить значения, сохраненные в базе данных, непосредственно форме при рендеринге страницы, когда запрос GET
, но ничего не сделал, хотя отладочная печать показывает, что значение form.dm_privacy
действительно то, что в базы данных, он по-прежнему показывает «Открыть».
Обе формы работают нормально, изменения сохраняются и все. Я не понимаю, почему это не отражает изменения, хотя это только то, что модельные формы делают, а не то, что я могу изменить?
privacy_options. html
{% extends "accbase.html" %}
{% block content %}
<h1>Privacy Options</h1>
<form method="post">
{% csrf_token %}
{{form.as_p}}
<button type="submit">Save</button>
</form>
{% endblock %}
просмотров. py
@login_required
def privacy_options(request):
"""
Holds all privacy options such as.. open/closed DMs, who can see profile/posts on profile
"""
if request.method == "POST":
form = PrivacyOptionForm(request.POST)
if form.is_valid():
print("Before saving:",request.user.dm_privacy, request.user.profile_privacy, request.user.included_in_find_friends)
user = request.user.username
request.user.dm_privacy = form.cleaned_data['dm_privacy']
request.user.profile_privacy = form.cleaned_data['profile_privacy']
request.user.included_in_find_friends = form.cleaned_data['included_in_find_friends']
request.user.save()
print("After save:",request.user.dm_privacy, request.user.profile_privacy, request.user.included_in_find_friends)
return render(request, 'acc_manage/acc_nav.html', {'username':user})
else:
form = PrivacyOptionForm()
form.included_in_find_friends = request.user.included_in_find_friends
form.profile_privacy = request.user.profile_privacy
form.dm_privacy = request.user.dm_privacy
print("\n\n",form.dm_privacy, "\n\n")
return render(request, 'acc_manage/privacy_options.html', {'form': form})