2017-02-10 14 views
1

HostInfoの管理画面にHostsモデルのip_addressを表示したいと思います。django admin関連フィールドの表示フィールド

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

に以下があります。

答えて

1

リレーションシップにネストしたい場合は、二重下線を使用してみてください。

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 
+0

<クラスのinventory.admin.HostInfoAdmin '>:(admin.E108)の値 'list_display [1]' 呼び出すことはできません 'host__ip_address'、 'HostInfoAdmin' の属性を指し、または 'inventory.HostInfo'の属性またはメソッド。 –

+0

これをチェックすると役立つかもしれませんhttp://stackoverflow.com/questions/32883057/foreign-key-reference-for-django-in-admin – Darshan

+1

そのリンクは私に必要な答えを得ました。ありがとうございました。 –

関連する問題