6

我想在的管理显示中显示ip_addressfromHosts模型。HostInfo

# 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)

我不太了解实现这一目标需要什么。

4

1 回答 1

3

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

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
于 2017-02-10T19:04:41.823 回答