Почему не работает сортировка в шаблонах django?

Есть два класса:

class TreeNode(MPTTModel):
    contract_date = models.DateField(null=False, blank=False)
    parent = TreeForeignKey('self', verbose_name='родитель', null=True, blank=True, related_name='children')
    
    class Meta:
        ordering = ['contract_date']

class ClientToCompanyPayment(models.Model):
    total = models.PositiveIntegerField(verbose_name='Сумма платежа', blank=False, null=False)
    date = models.DateField(verbose_name='Дата платежа', blank=False)
    client = models.ForeignKey(TreeNode, verbose_name='Участник', related_name="filterpayments")

    class Meta:
        abstract = True


class CashPayment(ClientToCompanyPayment):

    class Meta:
        ordering = ['date']


Почему-то сортировка по Meta.ordering в

{% for payment in user.treenode.filterpayments.all %} (возвращает объекты типа CashPayment)


работает, а в
{% for child1 in user.treenode.children.all %}
не работает. В чём может быть дело?
  • Вопрос задан
  • 3002 просмотра
Решения вопроса 1
Помнится, что в MPTTModel требовалось указывать определённое значение ordering. Кажется, по tree_id и lft.

Я бы не стал заморачиваться; можно сделать в модели процедуру ordered_children, выводящую нужные элементы и в нужном порядке, и вызвать её из шаблона.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы