Existe uma maneira para personalizar como um campo de procura na lista de resultados?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Existe uma maneira de personalizar a forma como um campo é exibido na lista de resultados django administrador? Por exemplo, eu gostaria de exibir uma imagem com base no valor do campo, assim como campos boolean são exibidos utilizando uma imagem em vez do valor texto.

Foi útil?

Solução

Definir um método em sua classe admin que retorna o HTML que deseja.

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

Outras dicas

Além do método que Daniel sugeriu, você também pode definir essa função em seu modelo como uma propriedade e, em seguida, adicioná-lo à sua list_display apenas como um campo normal:

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

A vantagem de fazê-lo desta maneira é que a propriedade my_image_field está agora disponível de qualquer lugar que você está trabalhando com um objeto MyModel, ao invés de apenas na administração (reconhecidamente provavelmente não um caso de uso enorme para essa propriedade específica, mas definitivamente vem a calhar em outras circunstâncias).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top