如何在Django ModelAdmin字段集中调用模型方法? [英] How do I call a model method in django ModelAdmin fieldsets?

查看:130
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆