Есть ли способ настроить внешний вид поля в списке результатов?

StackOverflow https://stackoverflow.com/questions/1617036

  •  06-07-2019
  •  | 
  •  

Вопрос

Есть ли способ настроить способ отображения поля в списке результатов администратора django? Например, я хотел бы отобразить изображение на основе значения поля, так же как логические поля отображаются с использованием изображения, а не текстового значения.

Это было полезно?

Решение

Определите метод в вашем классе администратора, который возвращает нужный HTML-код.

class MyAdmin(admin.ModelAdmin):
    list_display = ('name', 'my_image_field')

    def my_image_field(self, obj)
        return '<img src="/path/to/my/image/%s"/>' % obj.url
    my_image_field.allow_tags = True

Другие советы

В дополнение к методу, предложенному Дэниелом, вы также можете определить эту функцию в своей модели как свойство и затем добавить ее в свой list_display, как обычное поле:

class MyModel(models.Model):
    image_field = models.ImageField(...)

    @property
    def my_image_field(self):
        return return '<img src="%s"/>' % self.image_field.url
    my_image_field.allow_tags = True

Преимущество такого способа состоит в том, что свойство my_image_field теперь доступно из любого места, где вы работаете с объектом MyModel, а не только из администратора (по общему признанию, вероятно, это не очень полезный вариант для этого конкретного свойства, но определенно пригодится в других обстоятельствах).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top