Я ищу, чтобы создать выпадающий список в шаблоне, где значение выпадающего списка приходит из поля (ссылка) в моем Orders модели в models.py. Я понимаю, создание выпадающего меню, где значения устанавливаются статически, но так как я ищу, чтобы заполнить с значениями, хранящимися в БД, я не уверен, где начать.
Я создал модель и попытался играть с views.py, forms.py и шаблоны. Я в состоянии получить каждый из порядковых номеров для отображения, но не в выпадающем меню, и я борюсь с тем, как написать свой шаблон.
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 %}
Все, что я получаю, когда я вынести шаблон каждый из эталонных #s перечисленных вне, но НЕ в раскрывающемся меню. Это приводит меня к мысли, моя проблема заключается в основном в шаблоне, но я не уверен, как я новичок в использовании Django.