在Django管理员中为每个项目显示图标

Ser*_*jik 1 python django django-templates django-admin

我想在管理索引页面上为每个模型添加一个指定的图标。我在每个模型上添加了一个名为“图片”的属性,然后修改了/contrib/admin/sites.py将该图片名称传递给模板,并在admin的index.html模板上进行了检查和使用以获取结果。我想知道是否有更好的方法

class Product(models.Model):
    abbr = models.CharField(max_length=20,unique=True)
    title = models.CharField(max_length=200,unique=True)
    owner = models.ForeignKey(UserProxy)
    des = models.TextField(blank=True,null=True)
    picture =  'product.png'    
    def __unicode__(self):
        return self.abbr
    class Meta:
        none
Run Code Online (Sandbox Code Playgroud)

Han*_*ody 5

您所做的事情似乎还可以,只有一些小技巧可以使您的代码更好:

  1. django/contrib/admin/sites.py您可以修改类的子AdminSite类(如果您还没有这样做的话)。
  2. 修改AdminSite.index()方法以不传递图片,而是传递整个admin类(model_adminindex()方法中有可用变量)。
  3. 在ModelAdmin类(而不是模型)中分配图片,以将管理人员与模型分开。