Есть ли способ настроить внешний вид поля в списке результатов? - PullRequest
1 голос
/ 24 октября 2009

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

Ответы [ 2 ]

1 голос
/ 24 октября 2009

Определите метод в вашем классе администратора, который возвращает желаемый 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
0 голосов
/ 04 ноября 2009

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

...