Выборка результатов mysql в django

#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, если пользователь ничего не указал. Но закодирована по-другому 🙂