Выполнение функции independent () для любого поля модели комментариев всегда возвращает все записи,
Комментарий.objects.values ('пользователь'). Different ()
[{'user': 1}, {'user': 0}, {'user': 0}, {'user': 0}, {'user': 0}, {'user': 1}, { 'пользователь': 1}, {'пользователь': 1}, {'пользователь': 1}]
Комментарий.objects.values ('ip_address'). Independent ()
[{'ip_address': u'127.0.0.1 '}, {' ip_address ': u'192.168.0.180'}, {'ip_address': u'192.168.0.180 '}, {' ip_address ': u'192.168.0.180 '}, {' ip_address ': u'192.168.0. 180 '}, {' ip_address ': u'192.168.0.180'}, {'ip_address': u'192.168.0.180 '}, {' ip_address ': u'192.168.0.180'}, {'ip_address': u ' 192.168.0.180 '}]
Почему это происходит? Это можно обойти? Спасибо!
ps: Different () очень хорошо работает в разных типах полей пользовательской модели во время моего теста. Что-то особенное в структуре комментариев?
Заключение. Спасибо всем, кто ответил на этот вопрос. В сочетании с некоторым прочтением я пришел к следующему выводу:
- values () влияет на поля поиска в части SELECT окончательного sql ("values () принимает необязательные позиционные аргументы, * поля, которые определяют имена полей, которыми должен быть ограничен SELECT ")
- order_by () также добавляет свой параметр в часть SELECT.
- # P9 #
# P10 #
# P11 # Django Comment по умолчанию имеет скрытый параметр order_by, что создает всю проблему. Любая модель имеет скрытый order_by, когда возврат qs может вызвать ту же проблему.
- Чтобы решить эту проблему, добавьте в конец поиска пустой order_by (), который удаляет значение по умолчанию order_by.