Определение функции представления для отображения данных postgres в django
Я создал базу данных вин в postgresql (содержащую ID, названия и т.д.), и вставил около 300 наблюдений. Я хотел бы отобразить названия каждого вина в выпадающем меню с помощью django. urls.py правильно настроен. Что я сделал до сих пор:
models.py
from django.db import connection
from django.db import models
class ListWines(models.Model):
name = models.CharField(max_length=200)
views.py
from django.shortcuts import render
from wineapp.models import ListWines
def showallwines(request):
wines = ListWines.objects
return render(request, 'main.html', { 'name':wines } )
main.html
<!DOCTYPE html>
<head>
<body>
<select>
<option disabled = "True" selected>Select your favourite wine!</option>
{% for wines in showallwines %}
<option>{{wines.name}}</option>
{% endfor %}
</select>
</body>
</head>
База данных postgres (столбец, содержащий данные, которые я хочу отобразить, name) связана с приложением с помощью setings.py, однако она не показывает имена.
Как мне переопределить мои функции, чтобы увидеть отображение в выпадающем меню main.html?
Чтобы получить список всех объектов, необходимо использовать Model.objects.all()
Сделайте эти изменения в вашем представлении
def showallwines(request):
wines = ListWines.objects.all() # changed
# changed context name to wines since it is list of wines not names.
return render(request, 'main.html', { 'wines': wines } )
main.html
Необходимо использовать имя контекста wines
, так как мы передаем контекст wines
из представления
{% for wine in wines %}
<option>{{ wine.name }}</option>
{% endfor %}
views.py
Вместо ListWines.objects используйте ListWines.objects.all() и обновите имя контекста на "showallwines" this.
def showallwines(request):
wines = ListWines.objects.all()
return render(request, 'main.html', { 'showallwines':wines } )