2017-02-10 3 views
1

HostInfo의 admin 디스플레이에 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]'HostInfoAdmin '의 호출, 속성이 아닌'host__ip_address '를 의미하는 값 또는 'inventory.HostInfo'에 대한 속성 또는 메소드. –

+0

도움이 될만한지 확인하십시오 http://stackoverflow.com/questions/32883057/foreign-key-reference-for-django-in-admin – Darshan

+1

링크를 통해 필요한 답변을 얻을 수 있습니다. 고맙습니다. –