Как избежать дублирования значений при извлечении из базы данных в 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>
Другие вопросы по тегам