Отобразить значки галочек и крестиков для свойства в административной консоли 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, Документация предлагает пример того, как вы можете создать столбец, который ведет себя как логическое значение на дисплее. Короче говоря, вы делаете что-то вроде этого:

  1. Создайте метод в классе:

    def is_activated(self)
        if self.bar == 'something':
            return True
        return False
    
  2. добавить .boolean атрибут метода прямо под is_activated метод:

    is_activated.boolean = True
    
  3. Добавьте метод как поле в list_display:

    Класс MyAdmin(ModelAdmin): list_display = ['name', 'is_activation']

  4. Вы заметите, что имя столбца, вероятно, теперь "Активировано" или что-то в этом роде. Если вы хотите изменить заголовок столбца, используйте 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
Другие вопросы по тегам