繁体   English   中英

Django表单字段小部件被隐藏

[英]Django form field widget becomes hidden

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

我决定用简单的链接替换foreign_keys默认选择。

除了隐藏字段之外,它还能奏效!

IMG

我应该怎么做才能避免这种情况?

admin.py

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

您的窗口小部件将覆盖forms.HiddenInput

您应该使用正确的小部件,我认为应该是“ Select但还有其他可用选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM