• mongodb GridFS django FileFiled 默认 widget 只有一个文件上传框显示不了字段内容,重写widget


    首先,定位到:FileFiled 默认 widget 源码:mongoadmin包options.py中,如下:

     1 # Defaults for formfield_overrides. ModelAdmin subclasses can change this
     2 # by adding to ModelAdmin.formfield_overrides.
     3 FORMFIELD_FOR_DBFIELD_DEFAULTS = {
     4     DateTimeField: {
     5         'form_class': forms.SplitDateTimeField,
     6         'widget'    : widgets.AdminSplitDateTime
     7         },
     8     URLField     : {'widget': widgets.AdminURLFieldWidget},
     9     IntField     : {'widget': widgets.AdminIntegerFieldWidget},
    10     ImageField   : {'widget': widgets.AdminFileWidget},
    11     FileField    : {'widget': widgets.AdminFileWidget},
    12     }
    13 
    14 _fieldgenerator = load_field_generator()()
    源码摘取

    然后,根据注释部分:

    # Defaults for formfield_overrides. ModelAdmin subclasses can change this
    # by adding to ModelAdmin.formfield_overrides.

    重写widget如下:

     1 from django.contrib.admin.widgets import AdminFileWidget
     2 class FileWidget(AdminFileWidget):
     3     """
     4     A FileField Widget that shows its current value if it has one.
     5     """
     6 
     7     def __init__(self, attrs={}):
     8         super(FileWidget, self).__init__(attrs)
     9 
    10     def render(self, name, value, attrs=None):
    11         output = []
    12         output.append(super(FileWidget, self).render(name, value, attrs))
    13         output.append('<p class="help"><textarea name="%s" id="id_%s" rows="10" cols="40" class="vLargeTextField"> %s </textarea></p>' % (name, name, value.read()))
    14         return mark_safe(u''.join(output))
    MyFileWidget

    引入widget如下:

     1 from mongoengine import Document
     2 class AbstractDocument(Document):
     3 
     4     ModelAdmin.formfield_overrides = {
     5         FileField: {'widget': FileWidget},
     6     }
     7 
     8     meta = {
     9         'abstract': True,
    10     }
    MyDocument
  • 相关阅读:
    python实现求解列表中元素的排列和组合
    python3.7 安装dlib和face_recognition
    Python 魔法函数
    python的68个内置函数
    生成器和生成器函数,推倒式
    函数名的应用,闭包,迭代器
    函数的进阶(动态参数,命名空间和作用域,函数的嵌套,gloabal和nonlocal关键字)
    python 函数
    文件操作
    字典和列表的删除问题, 深浅拷贝
  • 原文地址:https://www.cnblogs.com/-wangjiannan/p/9203163.html
Copyright © 2020-2023  润新知