Есть ли способ настроить внешний вид поля в списке результатов?
-
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, а не только из администратора (по общему признанию, вероятно, это не очень полезный вариант для этого конкретного свойства, но определенно пригодится в других обстоятельствах).