Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 2
Регистрация: 01.01.2015
Сообщений: 96

Заполнение массива из бд

25.03.2017, 19:03. Показов 2851. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть модель -
Python
1
2
3
4
5
6
7
class Items(models.Model):
name = models.CharField(max_length=15, verbose_name='Название товара', default='')
price = models.IntegerField(default=0, verbose_name='Цена')
# image = models.CharField(max_length=255, verbose_name='Картинка', default='')
image = models.ImageField(null=True, blank=True, upload_to='image/', verbose_name='Изображение')
alias = models.SlugField(verbose_name='Alias товара', default='')
rating = models.FloatField(default=0, verbose_name='Рейтинг')
views -
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def popular(request):
title = 'Популярные'
products = Items.objects.all()
category = Category.objects.all()
proRating = request.POST.get('rating', False)
context = {
    'products': products,
    'category': category,
    'title': title,
    'proRationg': proRating,
}
print(proRating)
return render(request, 'popular/main.html', context)
Как заполнить массив proRating из бд, и к каждому рейтингу, что-бы был привязан определённый alias продукта.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2017, 19:03
Ответы с готовыми решениями:

Заполнение заполнение одномерного массива результатами анализа двумерного
Получить одномерный массив по правилу: Xi=0 если все значения i-строки и i-столбца двумерного массива меньше единицы, иначе Xi=1.

Заполнение массива случайными числами. Вычисление среднего арифметического значения массива. Вывод наибольшего массива
Заполнение два массива случайными числами. Вычисление среднего арифметического значения массива. Вывод наибольшего массива. Помогите...

Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200
Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200

3
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
02.04.2017, 02:11
Лучший ответ Сообщение было отмечено 50VAJJ как решение

Решение

Начнем с того, что в Python массивов нет.

Теперь по существу. Тут proRating прилетает из формы. И будет строковый.

А products взят из базы данных. В этой переменной содержится QuerySet. С его помощью можно получить доступ к alias и rating для всех продуктов.

При этом products попал в контекст. Т.е. в шаблоне можно уже вывести в цикле и рейтинг, и alias продукта.

Что этот код делать-то должен.
Ты извлек из БД все продукты и все категории.
Из формы прилетел рейтинг. Допустим, 10.
Ты говоришь - вот это у меня "Популярные".

Как это все связано? Может, ты хочешь извлечь из базы все продукты, у которых рейтинг не меньше того, что от юзера прилетел?

Тогда будет что-то типа такого:

popular_products = Items.objects.filter(rating_gte=float(pr oRating))
1
0 / 0 / 2
Регистрация: 01.01.2015
Сообщений: 96
03.04.2017, 20:59  [ТС]
Цитата Сообщение от Kifsif Посмотреть сообщение
Начнем с того, что в Python массивов нет.

Теперь по существу. Тут proRating прилетает из формы. И будет строковый.

А products взят из базы данных. В этой переменной содержится QuerySet. С его помощью можно получить доступ к alias и rating для всех продуктов.

При этом products попал в контекст. Т.е. в шаблоне можно уже вывести в цикле и рейтинг, и alias продукта.

Что этот код делать-то должен.
Ты извлек из БД все продукты и все категории.
Из формы прилетел рейтинг. Допустим, 10.
Ты говоришь - вот это у меня "Популярные".

Как это все связано? Может, ты хочешь извлечь из базы все продукты, у которых рейтинг не меньше того, что от юзера прилетел?

Тогда будет что-то типа такого:

popular_products = Items.objects.filter(rating_gte=float(pr oRating))
Да, протупил. Рейтинг это и есть индекс популярности.
Python
1
popular_products = Items.objects.filter(rating_gte=float(proRating))
То-есть эта строка будет фильтровать каждый продукт по рейтингу(когда сделаю цикл for)?
Спасибо.
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
03.04.2017, 21:21
Лучший ответ Сообщение было отмечено 50VAJJ как решение

Решение

Цитата Сообщение от 50VAJJ Посмотреть сообщение
То-есть эта строка будет фильтровать каждый продукт по рейтингу(когда сделаю цикл for)?
Выберет все продукты с рейтингом не ниже заданного.

По поводу цикла. надо быть очень осторожным здесь. Например, насколько я могу судить, в твоем примере ты на самом-то деле два раза по базе данных ударяешь.

А именно: первый запрос полетит, когда ты печатаешь, а второй запрос - когда ты будешь в цикле перебирать.


Вот смотри:
https://docs.djangoproject.com... -evaluated

Видишь: repr() - это печать. А Iteration - это когда ты в цикле будешь перебирать.

Я, конечно, понимаю, что печать не обязательно будет выполнена в боевых условиях.
Но это ошибка. И ты ее с высокой вероятностью повторишь и в боевых условиях. Например, проверишь - а вернул ли что-нибудь запрос-то. А если вернул, то кинешь результат в контекст.

Т.е. понимаешь - два обращения к базе данных. А база данных - самая медленная часть бэкэнда сайта.

Чтобы ошибки избежать, нужно выполнить force evaluation (см. ту же ссылку). Т.е. превратить все в список.

popular_products = list(Items.objects.filter(rating_gte=flo at(proRating)))

И подумать еще - может быть, кэшировать результат запроса. Тогда можно в ряде случаев вообще по базе даных не бить, а все из кэша взять. Но это уже другая тема - там посложнее будет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2017, 21:21
Помогаю со студенческими работами здесь

Заполнение одномерного массива пользователем и вывод квадратов чисел массива
Написать основную программу и модуль: заполнение одномерного массива числами real, которые вводит пользователь с клавиатуры. Вывод этого...

Не получается создать файл, сохранением массива в файле и заполнение массива значениями из файла
Здравствуйте. Я уже второй день пытаюсь решить проблему с созданием файла, сохранением массива в файле и заполнением массива информацией из...

Заполнение одномерного массива средними значениями другого массива
Как в маткаде заполнить одномерный массив средними значениями другого двумерного массива?

Размерность массива, заполнение массива случайными числами
В функции обработки нажатия кнопки:ввести размерность массива,создать двумерный динамический массив,вызвать функцию, которая заполнит...

Заполнение динамического массива из файла, где в первой строке указан размер массива, а вторая строка содержит значения
Заполнение динамического массива из файла, где в первой строке указано какой размер n массива,а вторая строка содержит допустим 100...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru