Отобразить значки галочек и крестиков для свойства в административной консоли Django
В админке Django, если это поле BooleanField или NullBooleanField, Django будет отображать симпатичный значок "вкл" или "выкл" вместо "Истина" или "Ложь".
Теперь у меня нет BooleanField в моей модели, потому что у меня есть свойство fior, в котором я хотел бы отображать значки, но когда я пытаюсь это сделать, Django кричит, что 'SomeAdmin.list_filter[0]' refers to 'is_activated' which does not refer to a Field.
Можно ли отобразить эти милые маленькие иконки для этого поля, не слишком взламывая Django.
Спасибо
2 ответа
Вы не хотите использовать list_filter
, Недвижимость, которую вы ищете list_display
, Документация предлагает пример того, как вы можете создать столбец, который ведет себя как логическое значение на дисплее. Короче говоря, вы делаете что-то вроде этого:
Создайте метод в классе:
def is_activated(self) if self.bar == 'something': return True return False
добавить
.boolean
атрибут метода прямо подis_activated
метод:is_activated.boolean = True
Добавьте метод как поле в
list_display
:Класс MyAdmin(ModelAdmin): list_display = ['name', 'is_activation']
Вы заметите, что имя столбца, вероятно, теперь "Активировано" или что-то в этом роде. Если вы хотите изменить заголовок столбца, используйте
short_description
атрибут метода:is_activated.short_description = "Activated"
Правильный способ сделать это сейчас в Django 3.0+ — с помощью@admin.display
.
@admin.display( boolean=True, ordering='-publish_date', description='Is Published?', ) def is_published(self, obj): return obj.publish_date is not None