【问题标题】:Display icons in Django admin for each item在 Django admin 中为每个项目显示图标
【发布时间】:2013-08-31 18:40:19
【问题描述】:

我想在管理索引页面上为每个模型添加一个指定的图标。我在每个模型上添加了一个名为“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

【问题讨论】:

    标签: python django django-templates django-admin


    【解决方案1】:

    “Python Fanboy”的回答很简短,但对我很有用,我可以避免修改 django 基类

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

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

    【讨论】:

      【解决方案2】:

      你所做的看起来还不错,只有一些小技巧可以让你的代码更好一点:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 2010-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多