Django/Python - перезапись первоначально загруженных значений
Я тихий новичок в Django, и у меня возникли трудности со следующим:
У меня есть представление, которое изначально имеет set1=0(False) и set2=1(True). Пользователь может поменять их местами, чтобы установить set1=1(True) и set2=0(False). Пользователь может сделать это, нажав кнопку 'Update'. Моя проблема в том, что в бэкенде все меняется, но фронтенд/view/html не обновляется. И я понятия не имею почему...
Я создал небольшой пример, который, если это сработает, заставит работать и мой кейс Django...
У меня есть следующее:
views.py
Сначала используется этот вид, и устанавливаются начальные значения для set1 и set2:
class MainSettingsView(generic.TemplateView):
extra_context = {"main_page": "active"}
context_object_name = 'main'
template_name = 'index.html'
set1 = int(model.set1 == True)
set2 = int(model.set2 == True)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
model = Setting12.objects.get(pk=1)
context['set1'] = int(model.set1 == True)
context['set2'] = int(model.set2 == True)
return context
Затем, основываясь на выбранной опции в радиокнопках, он изменяет модель/db и, следовательно, также set1 и set2:
class UpdateButton(generic.TemplateView):
extra_context = {"main_page": "active"}
context_object_name = 'setting12'
template_name = 'index.html'
def post(self, request, queryset=None, *args, **kwargs):
if update_type == "set1":
model = Setting12.objects.get(pk=1)
model.set1 = True
model.set2 = False
return redirect(reverse("main"))
elif update_type == "set2":
model = Setting12.objects.get(pk=1)
model.set1 = False
model.set2 = True
return redirect(reverse("main"))
Для контекста, вот что я использую в html:
index.html
<form class="card" action="{% url 'setting12' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<h3 class="card-title">Update Settings</h3>
<input type="radio" name="update_type" value="set1" {% if view.set1 %}checked {%endif%}> set1
{% if view.set1 is 1 %} ( Current setting ) {% else %} {% endif %}</input>
<input type="radio" name="update_type" value="set2" {% if view.set2 %}checked {%endif%}> Set2
{% if view.set2 is 1 %} ( Current setting ) {% else %} {% endif %}</input>
<button class="btn btn-primary" type="submit">Update</button>
</form>
Я вижу, что при нажатии кнопки изменяется db, set1 и set2 меняют значение. Но я также вижу, что при переходе от MainSettingsView > UpdateButton > MainSettingsView модель не перечитывается... она не просматривает модель снова. Поэтому я думаю, что проблема в том, что не получается обновить представление. Но я не могу найти способ сделать это...
Может ли кто-нибудь помочь мне? Пока что это занимает у меня несколько дней :s
Я наконец-то получил его =D!!!
Убрав часть view. в моем index.html, и убрав
set1 = int(model.set1 == True)
set2 = int(model.set2 == True) я удалил все начальные настройки, которые я больше не мог перезаписать. После этого все полностью заработало :)