1

我想在管理索引页面上为每个模型添加一个指定的图标。我在每个模型上添加了一个名为“picture”的属性,然后我修改了 /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
4

2 回答 2

5

您所做的似乎还可以,只有一些小提示可以使您的代码更好一些:

  1. 而不是修改django/contrib/admin/sites.py你可以继承AdminSite类(如果你还没有这样做的话)。
  2. 修改AdminSite.index()方法以传递不是图片,而是整个管理类(方法中有一个model_admin可用的变量index())。
  3. 在 ModelAdmin 类中分配图片,而不是模型,以将管理内容与模型分开。
于 2013-08-28T20:28:58.617 回答
0

'Python Fanboy' 的答案是如此简短但对我有用,我可以避免修改 django 基类

  1. 图片字段已移至管理类
  2. 我将 AdminSite 子类化为 CustomAdminSite 并复制了 index 和 app_index 并进行了修改(我不知道是否有比复制整个 index 和 app_index 更好的方法,比如覆盖)
  3. 在 urls.py 中, ' admin.sites.url' 替换为 ' custom_site.url' (custom_site是 的实例CustomAdminSite
  4. 我不想要另一个 url 而不是 ' /admin' like ' /my_admin' 所以我必须为CustomAdminSite我的所有模型使用实例,甚至是用户、组和站点
  5. 我正在使用admin_tools,现在我失去了我的应用程序菜单

对于我遇到的新问题,有什么更好的想法或解决方案吗?

于 2013-09-02T08:18:20.277 回答