Я довольно новичок в django (использую django 2.1.5 и python 3.7), и я не могу понять, как добавить выпадающее меню, показывающее элементы одного поля из таблицы в моей базе данных postgresql.В конечном итоге я хочу, чтобы пользователь мог выбрать один элемент из выпадающего меню, и я создам запрос с этим выбором и возвращаю результаты этого запроса.Но я застрял уже с выпадающим меню.Вот моя модель в файле models.py
class Locations(models.Model):
gid = models.AutoField(primary_key=True)
field_gid = models.BigIntegerField(db_column='__gid', blank=True, null=True) # Field renamed because it contained more than one '_' in a row. Field renamed because it started with '_'.
name_location= models.CharField(unique=True, max_length=254, blank=True, null=True)
x = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
y = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
z = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
geom = geomodels.PointField(srid=3912)
def __str__(self):
return self.name_location
class Meta:
managed = False
db_table = 'locations'
verbose_name_plural = "Locations"
Вот моя форма в файле forms.py:
from .models import Locations
class LocationsForm(forms.ModelForm):
class Meta:
model = Locations
fields = ('name_location',)
#Down here is what I actually thought I need, but maybe I am not using it right
locations_list = forms.ModelChoiceField(queryset=Locations.objects.all().only('name_location').order_by('name_location'))
А затем в моем файле views.py:
from .forms import LocationsForm
def LocationsView(request):
form = LocationsForm
return render(request, 'geoportal/mforest.html', {'form': form})
Мой urls.py выглядит следующим образом:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='geoportal-home'),
path('mforest/', views.LocationsView, name='geoportal-mforest')
]
И, наконец, в моем файле шаблона mforest.html (я помещаю извлечение только потому, что файл base.html содержит содержимое блока, котороеЯ расширяю в mforest.html):
{% extends "geoportal/base.html" %}
{% block content %}
<div class="col-md-3" style="height: 100vh; border: 2px red; background-color: lightgray">
<h3>Meteo Stations of the SFI</h3>
<form method="GET">
{% csrf_token %}
{{ form }}
</form>
</div>
<div class="col-md-9">
<h3>Output of the query</h3>
<table width="100%" class="blueTable"> </table>
</div>
{% endblock content %}
Для файла шаблона я также попытался предложить несколько вариантов итерации по результату набора запросов.Однако ни одно из решений, которые я пробовал, не отображало мое выпадающее меню.Я уверен, что я делаю что-то не так, так как я не получаю ожидаемый результат, но я не знаю, что исправить.PS.Я не получаю ошибку.Это просто ничего не отображает.Заранее благодарю за помощь!
РЕДАКТИРОВАТЬ: Подробнее о том, чего я хочу достичь, , пожалуйста, нажмите здесь , чтобы увидеть, что у меня есть на моей странице (хотя почти ничего).(Не обращайте внимания на ярлык «kraj_odvze», который я заменил в этом вопросе на «name_location»).Сейчас;вместо того, чтобы иметь текстовое поле, я действительно хочу выпадающее меню с элементами из поля "name_location" в моей базе данных.Кроме того, я включу средство выбора даты и времени и кнопку для выполнения запроса для отображения в виде таблицы и графиков в правой части страницы моей страницы.