【问题标题】:dropdown box empty in django when trying to populate values from database尝试从数据库中填充值时,django 中的下拉框为空
【发布时间】:2020-04-04 20:16:34
【问题描述】:

我是 Django 新手,我无法找到解决此问题的方法。我正在尝试使用数据库值填充下拉框。

这是我的文件

models.py 文件

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 文件

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'

orderlist.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>

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    将视图更改为列表视图。我不知道为什么我使用 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多