use*_*674 6 django django-admin
Django Docs 声明您可以在管理界面中为只读字段输出自定义HTML.这正是我所需要的,但它似乎不起作用.
在admin.py中:
from django.contrib import admin
class ExampleAdmin(admin.ModelAdmin):
readonly_fields = ('myfield', )
def myfield(self, instance):
print 'This part of the code is never reached!'
return u'<b>My custom html for the readonly field!</b>'
myfield.allow_tags = True
admin.site.register(State, StateAdmin)
Run Code Online (Sandbox Code Playgroud)
在models.py中:
class State(models.Model):
myfield = MyCustomField()
... etc ...
class MyCustomField(models.TextField):
def to_python(self, value):
... etc ...
Run Code Online (Sandbox Code Playgroud)
该字段在管理编辑页面上显示为只读.但是,永远不会调用应该创建自定义html的"myfield"方法.
有人知道我做错了什么吗?
亲切的问候,
帕特里克
Ada*_*lor 12
查看"django/contrib/admin/util.py"文件的lookup_field方法,这似乎是预期的行为.这是您正在使用的代码:
readonly_fields = ('myfield', )
Run Code Online (Sandbox Code Playgroud)
由于myfield是模型中定义的实际字段,因此readonly_fields将其设置为不可编辑; 它不允许您自定义显示给用户的内容.为了做到这一点,你必须提供readonly_fields一些不是真实领域的东西,比如myfield_readonly.然后,您必须将您ModelAdmin的myfield方法重命名为myfield_readonly,当然还有myfield.allow_tags = True.您可能还想添加myfield_readonly.short_description = 'My Field'.最后,你要离开实际的myfield现场出使用任何形式的exclude或fields.
| 归档时间: |
|
| 查看次数: |
3323 次 |
| 最近记录: |