来自相关模型的 Django 管理员显示字段



我想在HostInfo的管理显示中显示Hosts模型的ip_address

# models.py
class Hosts(models.Model):
  host_name = models.CharField(max_length=200, unique=True)
  ip_address = models.GenericIPAddressField(protocol='both', unpack_ipv4=True)
  def __unicode__(self):
    return unicode(self.host_name)
  def hostip(self):
    return unicode(self.ip_address)

我在 admin.py 中有以下内容

# admin.py
class HostInfoResource(resources.ModelResource):
    host = fields.Field(column_name='host',
                              attribute='host',
                              widget=ForeignKeyWidget(Hosts, 'host_name'))
    project = fields.Field(column_name='project',
                                attribute='project',
                                widget=ForeignKeyWidget(Project, 'project_name'))
    env = fields.Field(column_name='env',
                            attribute='env',
                            widget=ForeignKeyWidget(Env, 'env_name'))
    class Meta:
        model = HostInfo
        skip_unchanged = True
        import_id_fields = ('id', 'host','ticket','deployed_by')
        export_order = ('id', 'host', 'nexpose_level','cpus','memory','os',
                        'sudoers_copied', 'sudo_granted', 'extra_disks','app_type','app_name',
                        'vcenter_status','ticket','env','project','deployed_by',
                        'updated_on','created_on')
class HostInfoAdmin(ImportExportModelAdmin):
    resource_class = HostInfoResource
    list_display = ['id', 'host', 'nexpose_level','cpus','memory','os',
                        'sudoers_copied', 'sudo_granted', 'extra_disks','app_type','app_name',
                        'vcenter_status','ticket','env','project','deployed_by']
    readonly_fields = ('updated_on','created_on',)
admin.site.register(HostInfo, HostInfoAdmin)

我不太明白我需要什么才能达到这个目的。

当你想嵌套在关系中时,尝试使用双下划线。

class HostInfoAdmin(ImportExportModelAdmin):
    resource_class = HostInfoResource
    list_display = ['id','host__ip_address', 'host', 'nexpose_level','cpus','memory','os',
                        'sudoers_copied', 'sudo_granted', 'extra_disks','app_type','app_name',
                        'vcenter_status','ticket','env','project','deployed_by'] 
    def host__ip_address(self, obj):
        return obj.host.ip_address

最新更新