Ошибка исключения 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?

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

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


person Mike Br    schedule 30.05.2018    source источник
comment
покажите пожалуйста Dictionary.objects.prefetch_related('frequency_data').exclude(frequency_data__user=1).count()   -  person Brown Bear    schedule 30.05.2018
comment
Это то же самое - все еще ждем ... Таблица словаря содержит около 120k записей, а FrequencyData - 160k. Я проверяю с помощью filter () и count () - это было 120k - поэтому exclude должен показать 0   -  person Mike Br    schedule 30.05.2018
comment
попробуйте qs=Dictionary.objects.prefetch_related('frequency_data').exclude(frequency_data__user=1).count(); print(qs.query), а затем в ./manage.py dbshell попробуйте выполнить результат печати.   -  person Brown Bear    schedule 30.05.2018
comment
Для этого запроса оболочка такая же, как и выше - зависает. Я пробую локально и получаю AttributeError: 'int' object has no attribute 'query' Затем я пробую локально: from django.db import connection qs=Dictionary.objects.prefetch_related('frequency_data').exclude(frequency_data__user=1).count() print(connection.queries) и мой результат: pastebin.com/ZMG0StN1   -  person Mike Br    schedule 30.05.2018
comment
круто а зачем там 3 раза запрос?   -  person Brown Bear    schedule 30.05.2018
comment
Извините, я забыл reset_queries. Теперь только один: pastebin.com/ebfyHqdw   -  person Mike Br    schedule 30.05.2018
comment
а запрос выполняется в 'time': '0.039' да?   -  person Brown Bear    schedule 30.05.2018
comment
Да, но на моем компьютере (локально). На сервере (виртуальном хостинге) зависает psql. Это странно. Это проблема с postgres?   -  person Mike Br    schedule 30.05.2018
comment
попробуйте выполнить sql внутри plsql   -  person Brown Bear    schedule 30.05.2018
comment
Попробовал, зависает минут 15: / Локально работает нормально   -  person Mike Br    schedule 30.05.2018
comment
простой count работает 15 мин? если да, сделайте EXPLAIN ANALYZE в psql для выбора и создайте новый вопрос с тегом postgres.   -  person Brown Bear    schedule 30.05.2018
comment
Хорошо, я сделаю это. Спасибо   -  person Mike Br    schedule 30.05.2018
comment
stackoverflow.com/questions/50610415 /   -  person Mike Br    schedule 30.05.2018
comment
попробуйте выбрать, указанный в комментарии к вашему новому вопросу   -  person Brown Bear    schedule 30.05.2018