Size: a a a

Django [ru] #STAY HOME

2020 October 11

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Антон Кочневский
Ребята, может кто то знает как сделать активной ссылку dealer_deteil?
Что значит "сделать активной"?
источник

S

Shodmon in Django [ru] #STAY HOME
Антон Кочневский
serialirez
Не знаю что такое "активной", но посмотри гиперлинкедсериалайзер
источник

АК

Антон Кочневский... in Django [ru] #STAY HOME
Vitaliy Derbentsev
Что значит "сделать активной"?
что бы при нажатии я мог пройти по указанному URl
источник

SP

Sergey Python in Django [ru] #STAY HOME
Vitaliy Derbentsev
Если в каком-то месте прям очень уж надо так отсортировать, и число записей у модели не миллионы, то можно аннотировать запрос и отсортировать уже в приложении, через sorted, с key=lambda x: x.m2m_count
источник

SP

Sergey Python in Django [ru] #STAY HOME
как написать это оптимальнее - спрефетчил правильно, но  в приложении все равно листаю весь кверисет. А хотелось бы сразу фильтрануть по same_tags__isnull=True
источник

S

Shodmon in Django [ru] #STAY HOME
Sergey Python
как написать это оптимальнее - спрефетчил правильно, но  в приложении все равно листаю весь кверисет. А хотелось бы сразу фильтрануть по same_tags__isnull=True
У джанго ордеринг есть такое вроде по ф функции.

ерунду сказал
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Антон Кочневский
что бы при нажатии я мог пройти по указанному URl
Выведи ее на фронте в теге <a> 🤔
Ты вообще api для чего используешь? По идее, у тебя либо какое-то стороннее приложение от него инфу берет, либо клиентское js приложение. Другой пользы от него не вижу.
источник

SP

Sergey Python in Django [ru] #STAY HOME
ну и второй вариант - когда ищем не по заданному кол-ву общих тегов, а берем n наиболее похожих на данный пост - вот здесь хочу фильтрануть кверисет по каунту записей в m2m - но как - пока не понимаю. В приложении (sorted)- не хочется.
источник

SP

Sergey Python in Django [ru] #STAY HOME
был варик в приложении - просто делал строковое поле которое патчил при сигнале изменения в m2m - брал id-шники из m2m сохранял строкой - эт просто, но хочется по взрослому
источник

А

Андрій in Django [ru] #STAY HOME
Добавил кастомизированую страницу ошибки 500 в templates - сервер начал выдавать на том же месте другую ошибку. Что?
источник

S

Shodmon in Django [ru] #STAY HOME
Sergey Python
как написать это оптимальнее - спрефетчил правильно, но  в приложении все равно листаю весь кверисет. А хотелось бы сразу фильтрануть по same_tags__isnull=True
Тут я вижу 2 жды .all()

А если так?
qs = self.__class__.objects.prefetch_related('tags').all()
       #
       res = [p for p in qs if len(p.tags.all()) == similarity]
       print(len(res))

Хотя нужен анотейт, вроде, чтоб не делать алл в цикле, но префетч есть же)
источник

SP

Sergey Python in Django [ru] #STAY HOME
) а тэги то должны пересекаться...это метод модели. Т.е. я в префетче сразу определяю для каждой записи наборы same_tags - т.е. совпадающие с данной записью теги...
источник

SP

Sergey Python in Django [ru] #STAY HOME
и уже в приложении смотрю сколько в них записей...
источник

SP

Sergey Python in Django [ru] #STAY HOME
это первая ф-я.во второй же хотел пойти стандартным а-ля Sql путем - сортировка и срез
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Sergey Python
ну и второй вариант - когда ищем не по заданному кол-ву общих тегов, а берем n наиболее похожих на данный пост - вот здесь хочу фильтрануть кверисет по каунту записей в m2m - но как - пока не понимаю. В приложении (sorted)- не хочется.
Дык, а если annotate(tc=Count('tags')).filter(tc=similarity)?
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Sergey Python
) а тэги то должны пересекаться...это метод модели. Т.е. я в префетче сразу определяю для каждой записи наборы same_tags - т.е. совпадающие с данной записью теги...
А с кем пересекаться?
источник

SP

Sergey Python in Django [ru] #STAY HOME
Vitaliy Derbentsev
Дык, а если annotate(tc=Count('tags')).filter(tc=similarity)?
у поста есть теги. часть из них совпадает с тегами self записи, часть нет. чтобы понять насколько похожи два поста - нужно знать число общих тегов...
источник

SP

Sergey Python in Django [ru] #STAY HOME
Count(tags) просто число тегов у поста. Не интересует. Нужна сортировка по числу ОБЩИХ тегов...а это вычисляемое(но не через аннотацию, а через агрегацию в Prefetch) поле...
источник

SP

Sergey Python in Django [ru] #STAY HOME
кароче, я понял. Смотреть надо с классом
источник

ᅠᅠ

ᅠ🐲 Aᅠ ᅠ Cᅠ ᅠ Iᅠ ᅠ D ... in Django [ru] #STAY HOME
...
Да с ним просто не работали толком, но тоже думаем что быстрее для этой задачи))))
Если хорошо знаете django то изучение djangocms не так много времени займет, там по сути вся страница делится на статичные плейсхолдеры либо приложения (если это необходимо) , которые наследуют класс представления от djangocms, где переопределяется метод получения контекста, примерно как в generic.ListView.
источник