2016-01-21 128 views
0

我正在使用django管理员,并且想要更改“estado_material”字段值的字体颜色,如果它们可用“Disponible”或不是“Enpréstamo”。我的models.py:django admin:根据内容更改单元格颜色值

from django.db import models 

class Material(models.Model): 
    identificacion=models.CharField(max_length=30, verbose_name='Identificación del material') 
    num_com=models.CharField(max_length=30, verbose_name='Número') 
    nombre_sp=models.CharField(max_length=30, verbose_name='Nombre científico') 
    coleccion=models.CharField(max_length=30, verbose_name='Colección') 
    descripcion=models.CharField(max_length=1000, verbose_name='Descripción') 
    localidad=models.CharField(max_length=30, verbose_name='Localidad') 
    estratigrafia=models.CharField(max_length=1000, verbose_name='Estratigrafía') 
    colector=models.CharField(max_length=130, verbose_name='Colector/es') 
    observaciones=models.CharField(max_length=1000, verbose_name='Observación') 
    ubicacion=models.CharField(max_length=130, verbose_name='Ubicación') 
    class Meta: 
     verbose_name = "Material" 
     verbose_name_plural = "Materiales" 

    def __str__(self): 
     return self.num_com 

    def estado_material(self): 
     if Prestamos.objects.filter(material__num_com=self.num_com).exists(): 
      return "En préstamo" 
     else: 
      return "Disponible" 

和我的admin.py:

from django.contrib import admin 
from django.forms import TextInput, Textarea 
from django.db import models 


from coleccion.models import Material, 

class MaterialAdmin(admin.ModelAdmin): 
    list_display = ('num_com', 'identificacion', 'descripcion','ubicacion', 'estado_material') 
    search_fields = ('num_com', 'identificacion', 'descripcion','ubicacion') 
    formfield_overrides = { 
     models.CharField: {'widget': TextInput(attrs={'size':'40'})}, 
     models.TextField: {'widget': Textarea(attrs={'rows':4, 'cols':80})}, 
    } 

回答

0

estado_material可改为类似下面的使用方法format_htmldjango.utils.html

from django.utils.html import format_html 
... 
    def estado_material(self): 
     if Prestamos.objects.filter(material__num_com=self.num_com).exists(): 
      result = "En préstamo" 
     else: 
      result = "Disponible" 
     return format_html('<span style="color: {};">{}</span>', 
         'green' if result == 'Disponible' else 'red', 
         result) 

之前Django 1.9allow_tags属性可以被添加到方法来防止自动转义 - 现在已经被弃用,并且format_html就足够了。

相关问题