如何在Django ModelAdmin字段集中调用模型方法? [英] How do I call a model method in django ModelAdmin fieldsets?
本文介绍了如何在Django ModelAdmin字段集中调用模型方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当数据库中已经存在数据时,我想在管理表单上显示嵌入式地图。我有以下代码:
I want to display an embedded map on an admin form when data already exists in the db. I have the following code:
models.py
models.py
class Address(models.Model):
address = models.CharField()
def address_2_html(self):
if self.address:
# Return html for an embedded map using the entered address.
return embedded_map_html
else:
return ''
address_2_html.allow_tags = True
admin.py
class AddressAdmin(admin.ModelAdmin):
fieldsets = [(label, {'fields': ['address','address_2_html']}),]
此不起作用。我收到错误消息:
This doesn't work. I get an error:
'AddressAdmin.fieldsets[1][1]['fields']' refers to field 'address_2_html' that is missing from the form.
我尝试的另一件事是对字段集使用说明选项,但是,地址_2_html在AddressAdmin范围内不可访问。我确实成功地使用了'description'嵌入了一个静态地图,虽然很酷,但还不够酷。
Another thing I tried was using the 'description' option for 'fieldsets', however, 'address_2_html' is not accessible within the scope of AddressAdmin. I did succeed at embedding a static map using 'description' which was cool but not cool enough.
推荐答案
):
class AddressAdmin(admin.ModelAdmin):
fieldsets = [(label, {'fields': ['address','address_2_html']}),]
readonly_fields = ['address_2_html']
def address_2_html(self, obj):
return obj.address_2_html()
address_2_html.allow_tags = True
address_2_html.short_description = 'Address display'
这篇关于如何在Django ModelAdmin字段集中调用模型方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文