#mysql #django #sample
#mysql #django #пример
Вопрос:
Я использую django raw sql. Допустим, возвращает ли он 250 записей. Я хочу выборку результатов на основе процента ввода, указанного пользователем в форме (в шаблоне). Как мы можем этого добиться? Я могу получить номер ввода, указанный пользователем, используя метод get. После этого как я могу выполнить выборку записей? Пожалуйста, помогите мне
-Викрам
Комментарии:
1.
from random import sample
нет?2. Я хочу показать процент результатов (выборки). допустим, мой оператор sql select извлекает 90 записей, мне нужно получить только 50% записей, тогда каким может быть запрос?
Ответ №1:
Я не знаю, почему вы используете raw sql, но вот способ, которым вы могли бы это сделать, используя запросы Django…
def sample_results(request):
try:
perc = float(request.GET['percent'])
except AttributeError:
# Default to showing all records
perc = 100
# Decimal version of percent
perc = perc / 100
# get all objects in a random order
results = SomeModel.objects.all().order_by("?")
#determine how many to grab from the queryset
num = results.count()
grab = int(num * perc)
# refine the results to the first however many we need
results = results[:grab]
return render_to_response("some/template.html", {"results": results}, context_instance=RequestContext(request))
Таким образом, если бы у вас был /some /url?percent = 40, это показало бы 40% всех объектов модели, рандомизированных.
Комментарии:
1. Нет ли команды для дампа SQL запроса? Обычно я делаю это с панели инструментов Django Debug, поэтому я не знаю название команды навскидку.
2. Да, docs.djangoproject.com/en/dev/faq/models /…
3. ПРИВЕТ, Брант, спасибо за ваш ответ, я сделал так же, по умолчанию как 100, если пользователь ничего не указал. Но закодирована по-другому 🙂