Python Django表单字段小部件变为隐藏

Python Django表单字段小部件变为隐藏,python,django,django-forms,django-widget,Python,Django,Django Forms,Django Widget,模型字段作为外键链接到另一个具有大量条目的模型 我决定用简单链接替换外键的默认选择 它的工作原理是,磁场变得隐藏起来 我应该做些什么来避免这种情况 管理员 class SeriesAdmin(ModelLinkAdminFields, admin.ModelAdmin): modellink = ['video',] wdiget_file.py class ModelLinkWidget(forms.HiddenInput): def __init__(self, adm

模型字段作为
外键
链接到另一个具有大量条目的模型

我决定用简单链接替换
外键的默认选择

它的工作原理是,磁场变得隐藏起来

我应该做些什么来避免这种情况

管理员

class SeriesAdmin(ModelLinkAdminFields, admin.ModelAdmin):
    modellink = ['video',]
wdiget_file.py

class ModelLinkWidget(forms.HiddenInput):

    def __init__(self, admin_site, original_object):
        self.admin_site = admin_site
        self.original_object = original_object
        super(ModelLinkWidget,self).__init__()


    def render(self, name, value, attrs=None):
        if self.original_object is not None:
            change_url = urlresolvers.reverse('admin:%s_%s_change' % 
                                              (type(self.original_object)._meta.app_label, 
                                               type(self.original_object)._meta.object_name.lower()),
                                              args=(self.original_object.id,))
            return mark_safe('<a id="%s" name="{name}" href="%s">%s</a>' % 
                             (attrs['id'], change_url , escape(self.original_object)))
        else:
            return None

class ModelLinkAdminFields(object):
    def get_form(self, request, obj=None, **kwargs):

        form = super(ModelLinkAdminFields, self).get_form(request, obj, **kwargs)

        if hasattr(self, 'modellink'):
            for field_name in self.modellink:
                if field_name in form.base_fields:
                    form.base_fields[field_name].widget = ModelLinkWidget(self.admin_site, getattr(obj, field_name, ''))
        return form
class ModelLinkWidget(forms.HiddenInput):
定义初始化(自我、管理站点、原始对象):
self.admin\u site=admin\u site
self.original\u object=原始\u object
超级(ModelLinkWidget,self)。\uu初始化
def render(自身、名称、值、属性=无):
如果self.original_对象不是None:
change\u url=urlresolvers.reverse('管理员:%s\u%s\u更改'%
(键入(self.original_对象)。_meta.app_标签,
类型(self.original\u object)。\u meta.object\u name.lower()),
args=(self.original_object.id,)
返回标记_安全(“”%
(attrs['id'],change_url,escape(self.original_object)))
其他:
一无所获
类ModelLinkAdminFields(对象):
def get_表单(自我、请求、obj=None、**kwargs):
form=super(ModelLinkAdminFields,self).获取表单(请求,对象,**kwargs)
如果hasattr(self,'modellink'):
对于self.modellink中的字段名称:
如果form.base\u字段中的字段名称:
form.base\u fields[field\u name].widget=ModelLinkWidget(self.admin\u site,getattr(obj,field\u name.))
报税表

您的小部件覆盖了
表单。HiddenInput

你应该使用正确的小部件,我想应该是这样的,但是有