Неправильное алфавитное упорядочение по множеству полей в Джанго - PullRequest
1 голос
/ 04 ноября 2019

Я новичок в Django и пытаюсь выяснить, почему я ошибся в алфавитном порядке по полю m2m, когда у меня более двух записей. Ниже предоставьте фиктивную информацию для вашего лучшего понимания.

Создано с нуля models.py:

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=50)

class Publisher(models.Model):
    name = models.CharField(max_length=50)
    pub_authors = models.ManyToManyField(Author, blank=True)

После заполнения базы данных некоторыми данными, попытался выполнить простой запрос в консоли Python для получения всех publishers которые упорядочены по authors они имеют:

from app.models import Publisher
[print(i.pub_authors.all()) for i Publisher.all().order_by('pub_authors__name')]

Пример вывода, когда по 1 author для каждого publisher (правильное упорядочение):

<QuerySet [<Author: A>]>
<QuerySet [<Author: A>]>
<QuerySet [<Author: A>]>
<QuerySet [<Author: B>]>
<QuerySet [<Author: C>]>

Примервыходных, если есть более 1 author для каждого publisher (неправильный порядок):

<QuerySet [<Author: A>]>
<QuerySet [<Author: A>]>
<QuerySet [<Author: A>, <Author: B>]>
<QuerySet [<Author: A>]>
<QuerySet [<Author: B>]>
<QuerySet [<Author: B>, <Author: A>]>
<QuerySet [<Author: B>, <Author: C>]>
<QuerySet [<Author: B>]>
<QuerySet [<Author: A>, <Author: C>]>
<QuerySet [<Author: C>]>

Ожидаемые результаты:

<QuerySet [<Author: A>]>
<QuerySet [<Author: A>]>
<QuerySet [<Author: A>]>
<QuerySet [<Author: A>, <Author: B>]>
<QuerySet [<Author: A>, <Author: C>]>
<QuerySet [<Author: B>]>
<QuerySet [<Author: B>]>
<QuerySet [<Author: B>]>
<QuerySet [<Author: B>, <Author: C>]>
<QuerySet [<Author: C>]>

Надеюсь, вы можете направить меня в правильном направлении,почему это могло произойти, по крайней мере (не могу решить это в течение недели, очень борюсь за это)

Обновлено: Я предоставил неверные ожидаемые результаты (извините), обновите его. Я вижу, что мне нужно немного уточнить: у меня неправильный порядок между Publisher наборами запросов, а не внутри каждого Publisher. Поэтому я волнуюсь, когда Publisher queryset с [A, B] authors ставится перед Publisher с [A] authors. Или Publisher с [A, C], расположенным между [B] и [C]

...