пустое поле в django при попытке заполнить значения из базы данных - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в Django, и мне не удалось найти исправление для этого. Я пытаюсь заполнить раскрывающийся список значениями базы данных.

Вот мои файлы

models.py file

from django.db import models

# Create your models here.

class Page(models.Model):
    title = models.CharField(max_length=60)
    permalink = models.CharField(max_length=12, unique=True)
    update_date = models.DateTimeField('Last Updated')
    bodytext = models.TextField('Page Content', blank=True)

    def __str__(self):
        return self.title

class Item(models.Model):
    itemId = models.AutoField(primary_key=True)
    itemName = models.CharField(max_length = 100, unique=True)
    itemPrice = models.IntegerField()

    def __str__(self):
        return self.itemName

forms.py file

from django import forms
from .models import Item

class OrderListForm(forms.Form):
    itemNames = forms.queryset = Item.objects.all().order_by('itemName')

файл urls.py

from django.urls import path
from . import views

urlpatterns =[
    path('',views.OrderListView.as_view(),name ='hello'),

]

файл views.py

from django.views.generic.edit import FormView
from .forms import OrderListForm

# Create your views here.

class OrderListView(FormView):
    template_name = "myapp/orderlist.html"
    form_class = OrderListForm
    context_object_name = 'itemNames'

список заказов. html файл

<form action="" method = "post">
{% csrf_token %}

<label for="Items">Choose an Item:</label>
<select id = items >
{% for item in itemNames %}
<option value = "">{{item.itemName}}</option>
{% endfor %}
</form>

enter image description here

1 Ответ

0 голосов
/ 04 апреля 2020

Изменен вид на просмотр списка. Я не уверен, почему я использовал Formview

Вот код

views.py

from django.views.generic import ListView
from .models import Item

class OrderListView(ListView):
    template_name = "myapp/orderlist.html"
    context_object_name = 'itemNames'

    def get_queryset(self):
        return Item.objects.all()

Другой ответ - изменить файл html на

<form action="" method = "post">
{% csrf_token %}
<label for="Items">Choose an Item:</label>
{{form.as_p}}
</form>
...