Как отфильтровать queryset на вычисляемом поле, обеспеченном 'дополнительным' вызовом в Django?

Да, начиная с версии 3.0.0 Protocol Buffers (выпущено 28 июля 2016 г.), существует «Четко определенная кодировка в JSON как альтернатива двоичному прокодированию» , как упоминалось в примечаниях к выпуску

https://github.com/google/protobuf/releases/tag/v3.0.0

7
задан Dmitry Nedbaylo 5 November 2009 в 09:55
поделиться

2 ответа

Хорошо, непроверено, потому что у меня нет ваших данных - как насчет этого:

Author.objects.filter(removed=False).select_related('image').filter(image__height=100).annotate(count_of_images=Count('image')).filter(count_of_images__lte=5)

Редактировать:

Это почти привело вас к этому. Проблема связана с внешним соединением ... Я думаю, что это последняя версия, которая должна сделать это за вас:

Author.objects.filter(removed=False).select_related('image').filter(Q(image__height=100) | Q(image__height__isnull=True)).annotate(count_of_images=Count('image')).filter(count_of_images__lte=5)

That Q (image__height = 100) | Q (image__height__isnull = True) вот в чем трюк. Он получит либо авторов, у которых есть изображения высотой 100 , либо авторов, у которых высота изображения равна нулю (что означает, что у них нет связанных изображений)

PS. Спасибо за вопрос ... На самом деле это оказалось сложнее, чем я думал изначально, и я узнал несколько интересных приемов в процессе тестирования!


Ой ... Я действительно тестировал свое последнее решение с sqlite3. У меня нет экземпляра MySQL для тестирования ...: - (

Позвольте мне обдумать альтернативу.

Но - да - если он работает в sqlite, он должен работать в MySQL; Я бы сообщил об этом как об ошибке.

2
ответ дан 7 December 2019 в 18:44
поделиться

Насколько я могу судить, вы не используете значение счетчика, кроме как для фильтрации тех авторов, у которых оно больше 1. Если да, вы можете сделать это полностью в коде ORM с помощью простой запрос:

Author.objects.filter(removed=False, image__height__gte=100)
0
ответ дан 7 December 2019 в 18:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: