
vadim
16.02.2018
11:29:29

Dan
16.02.2018
11:31:01
стажеры жуны в хате есть ?
задачка вам
есть въюха
https://gist.github.com/dantyan/add355082b590dc6fc15bc6c27b91677
задача вытащить featured товары
затем самые популярные по просмотрам, но чтобы не дублировалось с featured
есть два варианта выборки см. в коде
чем они принципиально отличаются?
какой из них правильный?

vadim
16.02.2018
11:36:14
orderby(?) - вроде считался жутко злым запросом

Dan
16.02.2018
11:36:35
в данном случае это не принципиально

Google

N. M.
16.02.2018
11:40:39

Emil
16.02.2018
11:40:47
values_list возвращает tuple всех pk так как flat=True. Думаю нет нужды обернуть это в list

Senpos
16.02.2018
11:40:47

Dan
16.02.2018
11:40:59
да сработает

Dmitriy
16.02.2018
11:41:16
в кол-ве квери разница
list() выполнит запрос
ненужный

Dan
16.02.2018
11:42:03

Dmitriy
16.02.2018
11:42:22
Первый ?

Dan
16.02.2018
11:42:32
еще варианты будут ?

vadim
16.02.2018
11:42:34
ну или гугл order by rand - perfomance

Emil
16.02.2018
11:42:54
Я тоже думаю 1

Google

Dan
16.02.2018
11:43:47
ну я тоже так думал, поэтому его первым и написал ;)

Emil
16.02.2018
11:46:55
Значит второй вариант быстрее? Тоесть меньше sql запроса будет?

Dan
16.02.2018
11:47:20

Massimo
16.02.2018
11:48:47
if arm_form.is_valid():
obj = arm_form.save()
dict=request.POST
catch=dict['catchpk']
c = Route.objects.get(id=catch)
lastorder = c.arms.order_by('order').last().order
lastorder = lastorder + 1
rewrite = Arm(id=obj.pk, order=lastorder)
rewrite.save()
Тута я как бы объект сохраняю два раза первый раз в obj второй раз в rewrite, я же нагружать базу не хочу и хочу сохранять один раз. Делается это все за тем чтобы задавать другое значение order в объекте моедли Arm
Можно ли как то граммотно сделать чтобы не сохранять сначала объект а задать ему значение order?

Dmitriy
16.02.2018
11:50:10
arm_form.save(commit=False)

Dan
16.02.2018
11:51:55

Massimo
16.02.2018
11:53:08
ОП благодарю!

Senpos
16.02.2018
11:53:25
Подскажите, если у меня в базе qs = [самый новый объект, более старый, еще более старый] и я сделаю x, y, z = qs[:3] то в каком порядке они распакуются?
в x попадет самый новый или самый старый?

Dan
16.02.2018
11:53:38
по вопросу еще варианты будут ?

Senpos
16.02.2018
11:54:26

Dmitriy
16.02.2018
11:54:53
Ну тут можно предположить, что фокус в производительности саб квери в первом варианте

Dan
16.02.2018
11:56:10
чот народ неактивный попался
я надеялся на больший ажиотаж, пятница же =)

Senpos
16.02.2018
11:57:11

Dmitriy
16.02.2018
11:57:42

Dan
16.02.2018
11:58:43
в первом варианте запрос
SELECT * FROM "sell_sellproduct" WHERE ("sell_sellproduct"."status" = 1 AND NOT ("sell_sellproduct"."id" IN (SELECT U0."id" FROM "sell_sellproduct" U0 WHERE (U0."is_featured" = true AND U0."status" = 1) ORDER BY RANDOM() ASC LIMIT 4))) ORDER BY "sell_sellproduct"."views_count" DESC LIMIT 4
во втором
SELECT * WHERE ("sell_sellproduct"."status" = 1 AND NOT ("sell_sellproduct"."id" IN (105, 82, 83, 93))) ORDER BY "sell_sellproduct"."views_count" DESC LIMIT 4
те первый вариант выберет рандомно внутри подзапроса
а во втором исключит тех которые будут показываться
те по задаче второй вариант правильный

Senpos
16.02.2018
11:59:57

Dan
16.02.2018
12:02:36
difference так же делает в подзапросе

Emil
16.02.2018
12:04:43
Если они работают значит оба правильны)) тут уже вопрос производительности

Google

Dan
16.02.2018
12:05:11
нет
вопрос как раз таки в данных которые мы получаем

Dmitriy
16.02.2018
12:12:32
Интересная информация?

vadim
16.02.2018
12:17:36
есть ще бодяга с менитумени - когда filter().filter().filter() пишешь или все в 1 фильтер пихаешь, навскидку не вспомню, но orm там занятно строит запрос в зависимости от варианта

Dan
16.02.2018
12:20:42
да, тоже недавно нашел
помогло решить проблему

Artyem
16.02.2018
12:25:33
вопрос как раз таки в данных которые мы получаем
данные то должны быть одинаковыми, вот explain запросов будет отличаться.
в ситуации с подзапросом, он сначала найдёт все строки которые удовлетворяют остальным условиям, а потом каждую проверит на вхождение в подзапрос.
во втором случае он сразу отфильтрует 4 строки, и применит к ним нужные ограничения


Emil
16.02.2018
13:07:41
Подскажите пожалуйста...
Есть модель
class Catalogue(models.Model):
name = models.CharFIeld(max_length=128)
class Product(models.Model):
catalogue = models.ForeignKey(Catalogue, on_delete=models.CASCADE)
# Some other fields
Дело в том что у товара из разных каталогов должны быть разные параметры. Поэтому такая модель не работает.
Правильно ли сделать отдельные таблицы для каждого каталога и добавить туда товары типа
class Catalogue1, class Catalogue2...
или как иначе?
Просто это как то не джангистки чтоли получается)

Dan
16.02.2018
13:12:52
я делал таблицу Fields
привязывал к категории manytomany
но там надо переписывать формы

Massimo
16.02.2018
13:17:10
https://dpaste.de/QjKc
гайс подскажите, хочу ушоб jQuery срабатывал при на жатии на него вставлял shit в необходимом месте. Но браузер ругается. Я так понимаю что я в синтаксисе ошибся

Dmitriy
16.02.2018
13:20:36
попробуй собрать свой селектор снаружи

Massimo
16.02.2018
13:24:54

Spacehug
16.02.2018
13:25:38
Ребят, по шкале вонючести от 1 до 10, говнокод на втором питоне без комментов и докстрингов, это сколько?

Massimo
16.02.2018
13:27:18
Скорее его скорость

Dmitriy
16.02.2018
13:28:28

Massimo
16.02.2018
13:29:36

Google

Spacehug
16.02.2018
13:31:34
Нечитаемый
Даже если он быстро работает, маинтейнить его - боль

Kirill
16.02.2018
13:32:13
Подскажите пожалуйста реально ли в дефалтном джанговском i18n плагине использовать json формат файлов а не po. Что-то ничего не могу нагуглить, в доках тоже пусто, но малоли?

Massimo
16.02.2018
13:37:22
Uncaught Error: Syntax error, unrecognized expression: "#dialog58" нет, выдает ошибку

Milkiweed
16.02.2018
13:42:12
подскажите
есть класс
class Forwarder(models.Model):
users = models.ManyToManyField (ViberUser, blank=True, verbose_name='Viber пользователи')
created_date = models.DateTimeField('Дата создания',auto_now_add=False, auto_now=False,null=True, blank=True)
делаю
class Meta:
ordering = ['-created_date', '-users']
И получаю ошибку
'ordering' refers to the nonexistent field 'users'.
Что не так?

Какао
16.02.2018
13:43:25
А как ты хочешь сортировать по ManyToMany?

Admin
ERROR: S client not available

Milkiweed
16.02.2018
13:43:53
аа

Maksim
16.02.2018
14:03:18
Подскажите как запускать все тесты из разных приложений в одном проекте.

Dan
16.02.2018
14:18:19
ктонить может в двух словах сказать когда нужен git chery pick ?

Senpos
16.02.2018
14:19:01
>Просто копирование коммита в другую ветку

Dan
16.02.2018
14:19:19
чем он отличается от merge ?

Senpos
16.02.2018
14:19:53
мердж же прям две ветки сольет
а тут если есть нужный коммит
то только его закинет в ветку

V
16.02.2018
14:20:31
@pydjango

Dmytro
16.02.2018
14:20:48

Dan
16.02.2018
14:22:12
да но в таком случае конфликты не разрешаться

Павел
16.02.2018
14:31:44
Господа, работал кто с Flask? Вопрос возможно аналогичный Django. Хочу сделать dynamic preference, который при загрузке приложения щупает базу на предмет наличия переменных и если их нет создаёт. Но так как использую ещё и Celery, то базу щупать до загрузки воркеров Celery нельзя. Как быть?

Pavel
16.02.2018
14:52:51

Google

Artem
16.02.2018
14:56:20
коллеги! Подскажите, как из бд получить строго чОтное количество объектов?

Hot
16.02.2018
14:57:21
Какое именно чётное?
Все, если число чётное и все, кроме одного, если нечётное?

Artem
16.02.2018
14:58:04
вот делаешь ты:
select * from table_name where condition>n;
и вот тут мне надо вытащить строго чОтное количество строк
незаивисимо сколько там не было ьы
нашОл
SELECT
CASE count("users_user"."id") % 2 WHEN 0 THEN 'Чотное' ELSE 'нечОтное' END,
"users_user"."id",
"users_user"."password",
"users_user"."last_name"
FROM "users_user"
LEFT OUTER JOIN "users_follow"
ON ("users_user"."id" = "users_follow"."user_id")
WHERE "users_user"."id" = 1
GROUP BY "users_user"."id";


Igor
16.02.2018
15:24:01
У меня был случай, когда нужно было принимать только ПОСТ и без csrf, сделал так:
@csrf_exempt
@require_http_methods(["POST"])
Есть интересный вопрос:
У меня есть модель Рейтинг, в ней по разным юзерам очки записываются, тоесть когда нужно просчитать балы каждого и просортировать по ним делаю это так:
results = Results.objects.filter(
created_at__gte=monday_date,
created_at__lte=sunday_date
) \
.values('user__email') \
.annotate(total=Sum('score'))\
.order_by('-total')[:20]
А если надо кроме верхушки результатов взять еще и результат определенного пользователя, который может быть и сотым, а также ближайших его суперников, как это сделать что бы минимизировать количество запросов в бд??

Alexei
16.02.2018
15:28:45
всем привет, есть вопрос по wagtail как можно вытянуть данные из него в обычной питон файле?

Artem
16.02.2018
15:29:49

Alexei
16.02.2018
15:42:10

ros
16.02.2018
16:12:46