Как избежать дублирования значений при извлечении из базы данных в Django
Мне нужно, чтобы избежать дублирования значений при получении из базы данных в Django. У меня есть словарь результатов в виде списка.
queryset = [{'name':'shankar','Age':'24'},{'name':'Manoj','Age':'26'}, {'name':'shankar','Age':'25'}]
Мне нужно отобразить значение в раскрывающемся списке как значение Шанкар и Манодж. Я получаю значение, как запрос ниже
queryset = Books.objects.all()
Теперь я хочу избежать дублирования значения при отображении выпадающего списка на странице шаблона.
Заранее спасибо.
2 ответа
Использование
queryset = Books.objects.all().distinct('name')
Смотрите документы здесь:
"... Только в PostgreSQL вы можете передавать позиционные аргументы (*fields) для указания имен полей, к которым должен применяться DISTINCT. Это переводит в запрос SELECT DISTINCT ON SQL. Вот разница. Для обычного), база данных сравнивает каждое поле в каждой строке при определении того, какие строки различны. Для вызова Different() с указанными именами полей база данных будет сравнивать только указанные имена полей."
Используйте values () вместо метода all() в queryset:
queryset = Book.objects.values('name').distinct()
И в вашем шаблоне:
<select>
{% for obj in object_list %}
<option>{{ obj.name }}</option>
{% endfor %}
</select>