Python 向django admin添加自定义按钮或标记
我想向django管理页面添加一些html元素(按钮、“a”标记等)。我怎么做?请帮助。来自文档:Python 向django admin添加自定义按钮或标记,python,django-admin,Python,Django Admin,我想向django管理页面添加一些html元素(按钮、“a”标记等)。我怎么做?请帮助。来自文档: 不确定要将内容添加到何处,但这是我在其他地方找到的一个解决方案,用于更改文件字段的HTML(在我的示例中,我希望在ImageField中显示当前图像) 换句话说,您可以制作一个小部件,用于修改要自定义的字段的html: # Widget that modifies the output of a FileField class OutputWidget(AdminFileWidget):
# Widget that modifies the output of a FileField
class OutputWidget(AdminFileWidget):
# Overloaded django magic
def render(self, name, value, attrs=None):
output = []
# This is the place where we edit the output
if value and getattr(value, "url", None):
image_url = value.url
output.append(u' <a href="%s" target="_blank"><img src="%s" alt="%s" /></a>' % (image_url, image_url, image_url))
output.append(super(AdminFileWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))
# ModelAdmin class that is applied to the model
class MyModelSettings(admin.ModelAdmin):
# Overloaded django magic
def formfield_for_dbfield(self, db_field, **kwargs):
# Look for the field we want to edit and register the widget with it
if db_field.name == 'nameOfFieldIWantToEdit':
request = kwargs.pop("request", None)
kwargs['widget'] = OutputWidget
return db_field.formfield(**kwargs)
return super(MyModelSettings,self).formfield_for_dbfield(db_field, **kwargs)
# Register my overloaded settings with the model
admin.site.register(MyModel, MyModelSettings)
修改文件字段输出的小部件
类OutputWidget(AdminFileWidget):
#加戈魔法
def render(自身、名称、值、属性=无):
输出=[]
#这是我们编辑输出的地方
如果值和getattr(值,“url”,无):
image\u url=value.url
output.append(u'%(图像\ url、图像\ url、图像\ url))
append(super(AdminFileWidget,self).render(名称、值、属性))
返回标记_safe(u“”。连接(输出))
#应用于模型的ModelAdmin类
类MyModelSettings(admin.ModelAdmin):
#加戈魔法
def formfield_for_dbfield(self,db_字段,**kwargs):
#查找我们要编辑的字段并向其注册小部件
如果db_field.name=='nameOfFieldIWantToEdit':
request=kwargs.pop(“请求”,无)
kwargs['widget']=OutputWidget
返回db_field.formfield(**kwargs)
返回super(MyModelSettings,self).formfield_for_dbfield(db_field,**kwargs)
#向模型注册重载设置
admin.site.register(MyModel、MyModelSettings)
代码进入admin.py,您可以在其中注册模型。我从上面使用了Omokoli的解决方案,但为了让字段使用我的自定义小部件,我做了: class MyModelAdminForm(forms.ModelForm): class Meta: model = get_model('myapp', 'mymodel') widgets = { 'original_link': OutputWidget, } 类MyModelAdminForm(forms.ModelForm): 类元: model=get_model('myapp','mymodel') 小部件={ “原始链接”:OutputWidget, }