@coalesce

Как отсортировать объекты по внутреннему идентификатору id?

Пробовал в модели указывать
class Meta:
        ordering = ["-id"]

и во views.py
objs = MyModel.objects.all().order_by("-id")

Не работает.

Модель вроде обычная
class MyModel(models.Model):
    field1 = models.ForeignKey(
    field2 = models.ManyToManyField(

В шаблоне вывожу
{% for item in objs %}
        <tr>
            <td>{{ item.field1 }}</td>
            <td>{% for name in item.field2.all %} {{ name.last }} {% endfor %}</td>
        </tr>
{% endfor %}


Вопрос:
Как отсортировать объекты модели по внутреннему идентификатору id (который присваивается автоматически при создании объекта)?

Хочу чтобы недавно созданные объекты были вверху списка. Можно обойтись без создания дополнительного поля "дата создания"?
P.S. сортировка же будет по числу, а не по строке?
  • Вопрос задан
  • 770 просмотров
Решения вопроса 1
@coalesce Автор вопроса
Разобрался. Из-за js библиотеки.

Данные вставлял в таблицу к которой подключен DataTables.js
И при инициализации в данной библиотеке установлено значение по-умолчанию сортировки по первому столбцу.
Default
Value: [[0, 'asc']]

В шаблон вывел objs.query и там действительно ORDER BY есть.
objs = MyModel.objects.all().order_by("-id")

Отключить сортировку при инициализации в данной js-библиотеке можно так
$('#example').dataTable( {
    "order": []
} );


Спасибо за наводку Pavel Denisov
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ramonyaskal
@ramonyaskal
для сортировки в админке:
class Meta:
ordering = ["-update"]

для view:
objs = MyModel.objects.all().order_by("-update")

update или create? поля дата создания и дата обновления уже созданы в базе автоматически даже если в моделе они не прописаны
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы