Простой Djanqo Query, генерирующий запутанные результаты Queryset - PullRequest
3 голосов
/ 21 октября 2011

[ Обновление : версии программного обеспечения Python 2.7.2, Django 1.3.1]

Может кто-нибудь объяснить этот код консоли?

У FinishingStep есть ForeignKey для цитатыобъект, но это не совсем актуально.

>>> fins = FinishingStep.objects.filter(quote=jq)
>>> fins
[<FinishingStep: Tabbing>, <FinishingStep: Collator>]

Пока все хорошо, мы возвратили QuerySet с двумя объектами.

Но теперь путаница.Оба объекта теперь выглядят одинаково:

>>> fins[0]
<FinishingStep: Collator>
>>> fins[1]
<FinishingStep: Collator>

Преобразуйте его в список, и это исправит его.

>>> fins = list(fins)
>>> fins
[<FinishingStep: Tabbing>, <FinishingStep: Collator>]
>>> fins[0]
<FinishingStep: Tabbing>
>>> fins[1]
<FinishingStep: Collator>

[ Обновление : добавление .distinct() к запросу также исправляет это.Это особенно странно, поскольку на данный момент в базе данных есть только эти два элемента.]

Это ошибка?Я что-то не так делаю?

1 Ответ

2 голосов
/ 21 октября 2011

Этот билет обсуждает это поведение: https://code.djangoproject.com/ticket/9006

Просто используйте order_by запрос.Это происходит потому, что ядро ​​базы данных может свободно возвращать любую подходящую строку, если вы не укажете явное упорядочение.Так что я думаю, он просто выбирает один из своего кеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...