Все объекты гарантированно имеют метод .equals()
, поскольку Object содержит метод, .equals()
, который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. Используя ==
) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals()
и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.
Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder
. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==
, это был бы прекрасный способ. Строки сами не делают.
Это даст Вам список уникальных дат регистрации:
Posts.objects.filter(draft=False).dates('post_date','month',order='DESC')
Конечно, Вы, возможно, не нуждались бы в черновом фильтре и изменили бы 'post_date' на Ваше имя поля и т.д.
Я нашел ответ на свой собственный вопрос.
Это находится на этой странице в документации.
Существует функция, вызванная даты, которые дадут Вам отличные даты. Таким образом, я могу сделать
Entry.objects.dates ('pub_date', 'месяц') для получения списка объектов даты и времени, один в течение каждого года/месяц.
Необходимо смочь получить всю информацию, которую Вы описываете от встроенных представлений. Можно ли быть более конкретными относительно того, что Вы не можете получить? Это должно иметь все, в чем Вы нуждаетесь:
django.views.generic.date_based.archive_month
Ссылочная страница (ищут вышеупомянутую строку на той странице),