Как сохранить и отобразить форму, после обновления страницы
Я хочу после вписания даных отобразить их, то есть сохранить и отобразить в форме ниже
Моя форма или же forms
from django import forms
from .models import Zadanie
class ZadanieForm(forms.ModelForm):
class Meta:
model = Zadanie
fields = "__all__"
views
import django_filters
def home_page(request):
form = ZadanieForm()
if request.method == 'POST':
form = ZadanieForm(request.POST, request.FILES)
if form.is_valid():
form.save()
print("valid", form)
return render(request, "newapp/home_page.html", {'zform': ZadanieForm()})
главное с файла html
<div class="container">
<div class="row">
<div class="col">
{% csrf_token %}
{% for field in zform %}
<div>{{ field.label_tag}} {{ field }}</div>
{% endfor %}
</div>
<div class="col">
<input type="submit" value="Dodaj" class="btn btn-success px-5 py-3">
</div>
</div>
</div>
</form>
{% csrf_token %}
<table id="zadanieTable" class="table">
<thead>
<tr>
{% for field in zform %}
<th scope="col">{{ field.label_tag}}</th>
{% endfor %}
Ответы (1 шт):
Автор решения: Za Ars
→ Ссылка
Передайте только что созданный объект
...
instance = None
if .....:
form = ZadanieForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save()
....
return render(request, "newapp/home_page.html", {'zform': ZadanieForm(instance=instance)})
Но лучше, после создания отправлять пользователя на страницу редактирования этого объекта. Так вы сможете менять объект сколько угодно раз и выводить его.
# views.py
def home_page(...):
...
if fors.is_valid():
instance = form.save()
return redirect('zadanie_edit_url', kwargs=dict(pk=instance.pk))
...
def zadanie_edit(request, *args, **kwargs):
z = Zadanie.objects.get(kwargs['pk'])
form = ZadanieForm(instance=z)
return render(request, context=dict(zform=form), temlate_name="....")
#urls.py
urlpatterns = [
...
path('zadanie-<pk:int>/', zadanie_edit, name='zadanie_edit_url'),
]
