2014-02-14 57 views
0

我想顯示另一個類的一個屬性。當前類有一個外鍵用於我想要獲取該屬性的類。Django從外鍵的類中獲取屬性

# models.py 
class Course(models.Model): 
    name = models.CharField(max_length=100) 
    degree = models.CharField(max_length=15) 
    university = models.ForeignKey(University) 

    def __unicode__(self): 
     return self.name 

class Module(models.Model): 
    code = models.CharField(max_length=10) 
    course = models.ForeignKey(Course) 

    def __unicode__(self): 
     return self.code 

    def getdegree(self): 
     return Course.objects.filter(degree=self) 

# admin.py. 
class ModuleAdmin(admin.ModelAdmin): 
    list_display = ('code','course','getdegree') 
    search_fields = ['name','code'] 
    admin.site.register(Module,ModuleAdmin) 

所以我想要做的是獲得模塊使用「getdegree」的「度」。我在這裏閱讀了幾個主題,也嘗試了django文檔,但我不是一個有經驗的用戶,所以即使我猜這是簡單的,我無法弄清楚。謝謝!

回答

5

這很簡單。

試試這個:

def getdegree(self): 
    return self.course.degree 

Documentation here

可以安全地做到這一點,因爲course不是一個可爲空場。如果是這樣,你應該在訪問它的屬性之前檢查對象的存在。

+0

哇!這真的很簡單!非常感謝您的回答!與所有這些主題迷失了,我想我應該使用過濾器。再次感謝!! – manosim

+1

它學習時發生!祝你好運。 :) – karthikr

+0

關於這個最後一個問題。是否可以使用「getdegree」來使用「list_filter」過濾結果?因爲當我將它添加到「list_filter」時,我收到錯誤。 – manosim