2016-05-04 4 views
-1

В 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 %} 

    &nbsp 
    <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 %} 
+1

Я не совсем понимаю, что вы здесь делаете. Вы показываете форму один раз с помощью 'form.as_table', а затем снова зацикливаетесь и выполняете' field.value'. Но поля не будут иметь значения; если вы хотите отобразить то, что уже было сохранено в базе данных, вы должны запросить модель, а не форму. –

+0

Сначала я создаю окно ввода для создания категории, а затем во второй таблице я пытаюсь отобразить его в браузере, и я получаю None вместо значения поля. – Bhanukiran

+0

Потому что, как я уже сказал, * вам нужно запросить модель *, а не отображать поля формы снова. –

ответ

1

Попробуйте как этот

def add_cat(request): 
    form = CatForm(request.POST or None) 
    catagories = <model>.objects.all() 
    context = {"form":form, 'categories':categories} 

    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) 

В шаблонах

{% for category in categories %} 
    <table align="center"> 
     <tr><th>Category Name</th></tr> 
     <tr><td>{{ category }}</td></tr> 
    </table> 
{% endfor %} 
+0

Он отображает категории только тогда, когда метод запроса POST (Только когда я добавляю новые элементы), но когда я просто просматриваю различные элементы меню (запрос GET), я получаю пустую таблицу. – Bhanukiran

+0

Добавьте следующие две строк после контекста = любых категорий .objects.all() context.update ({ «категории»: категории}) Я обновляю ответ, как хорошо –

+0

Спасибо теперь его рабочим – Bhanukiran

Смежные вопросы