Как выбрать 30 уникальных случайных значений из базы данных (MySQL) с помощью Django? - PullRequest
1 голос
/ 03 мая 2011

Я прочитал этот вопрос: В Django, как выбрать 100 случайных записей из базы данных?
И попытался использовать Content.objects.all().order_by('?')[:30], но это приведет к дублированию элементов. Итак, как я могу выбрать 30 уникальных случайных значений из базы данных?

1 Ответ

2 голосов
/ 03 мая 2011

Если у вас есть управляемое количество записей в базе данных (т. Е. Не тысячи), это будет работать, и даже если оно дважды попадет в базу данных, это, вероятно, будет гораздо более эффективным, чем order_by('?').

import random
content_pks = Content.objects.values_list('pk', flat=True)
selected_pks = random.sample(content_pks, 30)
content_objects = Content.objects.filter(pk__in=selected_pks)
...