Заполнение выпадающего списка из столбца базы данных без повторений - Django
Я изучаю Django, создавая приложение для бронирования хостелов. Я хочу, чтобы выпадающий список в index.html заполнялся из колонки базы данных под названием "location". Я хотел бы получать вторые элементы (человекочитаемые имена) без повторений. До сих пор я пробовал, как показано в кодах ниже, но я получаю повторения, когда у меня много хостелов, имеющих одинаковое местоположение. Я понимаю, что для получения списка отличительных имен столбцов из базы данных нужно использовать distinct() в сочетании с values(). Но как мне использовать distinct() и get_FOO_display() одновременно, чтобы получить как отдельные столбцы, так и вторые элементы кортежей. Или есть другой подход?
models.py
HOST_LOCATION=[('KM', 'Kings Main Campus'),
('KT', 'Kings Town Campus'),
('KK', 'Kings Kitale Campus'),
('KE', 'Kings Eldoret Branch')]
class Hostel(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(null=False, unique=True, blank=True)
location = models.CharField(max_length=50, choices=HOST_LOCATION, default=None, null=False)
landlord = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
def __str__(self):
return self.name
Views.py
def index(request):
Host = Hostel.objects.all()
return render(request, 'index.html', {'Host': Host})
Шаблон
<select class="custom-select" id="inputGroupSelect04">
<option selected disabled> SELECT A CAMPUS TO FIND HOSTEL</option>
{% for entry in Host %}
<option value="{{ entry.id }}">{{ entry.get_location_display }}</option>
{% endfor %}
</select>
Базовым решением будет передача вариантов выбора в контекст и цикл по ним в select options