【问题标题】:Showing file size in django admin在 django admin 中显示文件大小
【发布时间】:2011-06-16 14:03:27
【问题描述】:

我有一个 django 应用程序,其中包含一些用于上传文件的模型。 创建新对象并显示现有对象时,我需要显示不同的字段。 我有以下管理类:

class ResourceAdminForCustomer(ModelAdmin):

    list_display = ["name", "type", "size"]
    list_filter = ['type']

    def get_form(self, request, obj=None, **kwargs):
        if obj:
            self.fields = ("name", "type", "size", "tags")
        else:
            self.fields = ("name", "type", "media", "description", "tags")
        return super(ResourceAdminForCustomer, self).get_form(request, obj, \
                                                              **kwargs)

    def size(self, obj):
        file = '%s/customers/%s/resources/%s' \
             % (settings.MEDIA_ROOT, obj.customer, obj.media.name.split("/")[-1])
        if os.path.exists(file):
            return "%0.1f KB" % (os.path.getsize(file)/(1024.0))
        return "0 MB"

当我尝试打开我得到的表单时:

渲染时捕获 AttributeError:“NoneType”对象没有属性“标签”

那么如何将 size 函数的值作为 read_only 字段插入到我的 self.fields 中?

谢谢。

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    在 ModelAdmin 中设置“readonly_fields”以使“size”的结果在列表和编辑视图中都是只读的。

    如果您希望根据请求和当前对象设置只读字段,也可以覆盖 get_readonly_fields ModelAdmin 方法。

    在 Django 1.2 中的 ModelAdmin 中添加了只读字段:

    https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fields

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2013-01-27
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多