В models.py, я создал поле типа символа, называемое «категория». После того, как пользователь вводит имя категории, он сохраняется в базе данных и теперь я хочу отобразить все имена категорий хранящиеся в базе данных. Я создал четыре категории. Я могу видеть все четыре в базе данных, но при отображении их в пользовательском интерфейсе я вижу NONE вместо имен категорий.
views.py,Невозможно создать поля формы цикла в django
def add_cat(request):
form = CatForm(request.POST or None)
context = {"form":form}
if form.is_valid():
instance = form.save(commit=False)
category = form.cleaned_data.get("category")
instance.category = category
instance.save()
messages.add_message(request, messages.INFO, 'Category Added')
return render(request,"add-cat.html",context)
forms.py,
class CatForm(forms.ModelForm):
class Meta:
model = Add_cat
fields = ['category']
Мой файл шаблона,
{% extends "admin-menu.html" %}
{% block content %}
{% load staticfiles %}
<head>
<link rel="stylesheet" href="{% static 'style.css' %}">
</head>
<h2 style="text-align: center;">Add Category</h2>
<form method="POST">
{% csrf_token %}
<table align="center">
{{form.as_table}}
</table>
<input type="submit" value="Add" style="margin-left: 48%;"/>
<input type="reset" value="Cancel"/>
</form>
{% if messages %}
<ul class="messages" style="list-style-type: none;">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
 
<form id="id1">
{% for field in form %}
<table align="center">
<tr><th>Category Name</th></tr>
<tr><td>{{field.value}}</td></tr>
</table>
{% endfor %}
</form>
{% endblock %}
Я не совсем понимаю, что вы здесь делаете. Вы показываете форму один раз с помощью 'form.as_table', а затем снова зацикливаетесь и выполняете' field.value'. Но поля не будут иметь значения; если вы хотите отобразить то, что уже было сохранено в базе данных, вы должны запросить модель, а не форму. –
Сначала я создаю окно ввода для создания категории, а затем во второй таблице я пытаюсь отобразить его в браузере, и я получаю None вместо значения поля. – Bhanukiran
Потому что, как я уже сказал, * вам нужно запросить модель *, а не отображать поля формы снова. –