[英]Creating Dropdown from Model in Django
我希望在模板中創建一個下拉列表,其中下拉列表的值來自models.py
Orders模型中的字段(引用)。 我理解創建一個靜態設置值的下拉列表,但由於我希望填充存儲在數據庫中的值,我不確定從哪里開始。
我創建了模型並嘗試使用views.py
, forms.py
和templates。 我能夠顯示每個訂單號但不在下拉列表中,我正在努力解決如何編寫模板的問題。
models.py
from django.db import models
class Orders(models.Model):
reference = models.CharField(max_length=50, blank=False)
ultimate_consignee = models.CharField(max_length=500)
ship_to = models.CharField(max_length=500)
def _str_(self):
return self.reference
forms.py
from django import forms
from .models import *
def references():
list_of_references = []
querySet = Orders.objects.all()
for orders in querySet:
list_of_references.append(orders.reference)
return list_of_references
class DropDownMenuReferences(forms.Form):
reference = forms.ChoiceField(choices=[(x) for x in references()])
views.py
def reference_view(request):
if request.method == "POST":
form = references(request.POST)
if form.is_valid():
form.save()
return redirect('index')
else:
form = references()
return render(request, 'proforma_select.html', {'form': form})
proforma_select.html
{% extends 'base.html' %}
{% block body %}
<div class="container">
<form method="POST">
<br>
{% for field in form %}
<div class="form-group row">
<label for="id_{{ field.name }}" class="col-2 col-form-label"> {{ field.label }}</label>
<div class="col-10">
{{ field }}
</div>
</div>
{% endfor %}
<button type="submit" class="btn btn-primary" name="button">Add Order</button>
</form>
</div>
{% endblock %}
我在渲染模板時獲得的是每個引用的引用#,但不在下拉列表中。 這讓我相信我的問題主要是模板,但我不確定我是否是使用Django的新手。
你在使用Materialise CSS嗎? 如果是,則Django表單呈現的下拉菜單與Materialize預期的不同。 因此,您需要覆蓋表單小部件。 你可以這樣做:
forms.py:
class DropDownMenuReferences(forms.Form):
reference = forms.ChoiceField(choices=[(x) for x in references()],
widget=forms.Select(choices=[(x) for x in references()], attrs={'class':
'browser-default'}))
這會覆蓋傳遞給html的參數。 您也可以在attrs中傳遞任何名稱標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.