Ошибка исключения Django ORM

У меня проблемы с запросом - с filter () все в порядке, но с exclude () не работает. Мои модели:

class Dictionary(DateTimeModel):
    base_word = models.ForeignKey(BaseDictionary, related_name=_('dict_words'))
    word = models.CharField(max_length=64)
    version = models.ForeignKey(Version)

class FrequencyData(DateTimeModel):
    word = models.ForeignKey(Dictionary, related_name=_('frequency_data'))
    count = models.BigIntegerField(null=True, blank=True)
    source = models.ForeignKey(Source, related_name=_('frequency_data'), null=True, blank=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name=_('frequency_data'))
    user_ip_address = models.GenericIPAddressField(null=True, blank=True)
    date_of_checking = models.DateTimeField(null=True, blank=True)
    is_checked = models.BooleanField(default=False)

И я хочу взять несколько слов из словаря, где частоты не от какого-то пользователя

Dictionary.objects.prefetch_related('frequency_data').filter(frequency_data__user=1)[:100] - OK

Dictionary.objects.prefetch_related('frequency_data').exclude(frequency_data__user=1)[:100] - processor up to 100% and loading

Без prefetch_related то же самое. Что не так с exclude?

РЕДАКТИРОВАТЬ Таблица db словаря - 120 тыс. Строк FrequencyData - 160 тыс. Строк

РЕДАКТИРОВАТЬ2 psql (9.6.6)

покажите пожалуйста Dictionary.objects.prefetch_related('frequency_data').exclud‌​e(frequency_data__us‌​er=1).count()

Brown Bear 30.05.2018 14:00

Это то же самое - все еще ждем ... Таблица словаря содержит около 120k записей, а FrequencyData - 160k. Я проверяю с помощью filter () и count () - это было 120k - поэтому exclude должен показать 0

Mike Br 30.05.2018 14:10

попробуйте qs=Dictionary.objects.prefetch_related('frequency_data').exc‌​lude(frequency_data_‌​_user=1).count(); print(qs.query), а затем в ./manage.py dbshell попробуйте выполнить результат печати.

Brown Bear 30.05.2018 14:21

Для этого запроса оболочка такая же, как и выше - зависает. Я пробую локально и получаю AttributeError: 'int' object has no attribute 'query' Затем я пробую локально: from django.db import connection qs=Dictionary.objects.prefetch_related('frequency_data').exc‌​lude(frequency_data_‌​_user=1).count() print(connection.queries) и мой результат: pastebin.com/ZMG0StN1

Mike Br 30.05.2018 14:53

круто а зачем там 3 раза запрос?

Brown Bear 30.05.2018 15:01

Извините, я забыл reset_queries. Теперь только один: pastebin.com/ebfyHqdw

Mike Br 30.05.2018 15:08

а запрос выполняется в 'time': '0.039' да?

Brown Bear 30.05.2018 15:13

Да, но на моем компьютере (локально). На сервере (виртуальном хостинге) зависает psql. Это странно. Это проблема с postgres?

Mike Br 30.05.2018 15:24

попробуйте выполнить sql внутри plsql

Brown Bear 30.05.2018 15:26

Попробовал, зависает минут 15: / Локально работает нормально

Mike Br 30.05.2018 15:51

простой count работает 15 мин? если да, сделайте EXPLAIN ANALYZE в psql для выбора и создайте новый вопрос с тегом postgres.

Brown Bear 30.05.2018 16:02

Хорошо, я сделаю это. Спасибо

Mike Br 30.05.2018 17:02
stackoverflow.com/questions/50610415/…
Mike Br 30.05.2018 19:29

попробуйте выбрать, указанный в комментарии к вашему новому вопросу

Brown Bear 30.05.2018 20:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
14
87
0

Другие вопросы по теме