2013-01-02 9 views
8

मैं व्यवस्थापक सूची दृश्य में विदेशी कुंजी 'कंपनी का नाम' प्रदर्शित करने की कोशिश कर रहा हूं। हालांकि, सूची दृश्य कंपनी के लिए दिखाता है (कोई नहीं)। मैं क्या गलत कर रहा हूँ?Django: एक सूची में विदेशी कुंजी मान व्यवस्थापक प्रदर्शित करता है

admin.py

class CampaignAdmin(admin.ModelAdmin): 
    #fields = ['name', 'Company_name', 'active', 'modified', 'created'] 
    list_display = ['name', 'related_company', 'active', 'modified', 'created'] 
    list_filter = ['active'] 
    search_fields = ['name'] 
    sortable_field_name = "name" 
    autocomplete_lookup_fields = { 
     'name': ['name'], 
     } 

    def related_company(self, obj): 
     return '%s'%(obj.Company.name) 
    related_company.short_description = 'Company' 


admin.site.register(Campaign, CampaignAdmin) 

model.py

class Company(models.Model): 
    companyid = models.CharField(max_length=255, primary_key=True, db_column='companyID') 
    name = models.CharField(max_length=105) 
    logourl = models.CharField(max_length=255, db_column='logoURL') 
    website = models.CharField(max_length=255, blank=True) 
    active = HibernateBooleanField(default=False) 
    created = models.DateTimeField() 
    modified = models.DateTimeField(null=True, blank=True) 

    class Meta: 
     db_table = u'company' 
     ordering = ['name'] 

    @staticmethod 
    def autocomplete_search_fields(): 
     return ("id__iexact", "name__icontains",) 

    def __unicode__(self): 
     return self.name 


class Campaign(models.Model): 
    campaignid = models.CharField(max_length=255, primary_key=True, db_column='campaignID') 
    name = models.CharField(max_length=105) 
    active = HibernateBooleanField(default=False) 
    created = models.DateTimeField() 
    modified = models.DateTimeField(null=True, blank=True) 
    companyid = models.ForeignKey(Company, null=True, db_column='companyID', blank=True) 

    class Meta: 
     db_table = u'campaign' 


    def __unicode__(self): 
     return self.name 

उत्तर

22

आपका Campaign मॉडल नहीं Company विशेषता है - ForeignKey क्षेत्र companyid है। आप वैसे भी

def related_company(self, obj): 
    return obj.companyid.name 
related_company.short_description = 'Company' 

करने के लिए अपने समारोह को बदलने की जरूरत होगी और चूंकि कंपनी वस्तु की __unicode__() विधि वैसे भी नाम देता है, तो आप शायद जरूरत नहीं है कस्टम समारोह - मुझे लगता है कि आप विदेशी कुंजी क्षेत्र रख सकते हैं सीधे डिस्प्ले सूची में:

list_display = ['name', 'companyid', 'active', 'modified', 'created'] 
+0

इसके अलावा स्ट्रिंग इंटरपोलेशन व्यर्थ है: केवल 'obj.companyid.name' वापस आना चाहिए। –

+0

@DanielRoseman - हे, मैं इसे अनदेखा कर दूंगा। धन्यवाद, तय है। – Blair

संबंधित मुद्दे