2014-02-16 96 views
1

我想顯示一個對象在Django管理員中有多少關係。如何查看Django模型在管理中有多少關係?

比方說,我有以下型號:

class Question(models.Model): 
    question_text = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 


class Choice(models.Model): 
    question = models.ForeignKey(Question) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

而且我想在管理(list_display)旁邊顯示的投票問題有對的選擇量。有沒有辦法給類Question增加一個函數來返回它有多少選擇?

編輯

這是一個假設的模型。我正在使用帶有文件存儲的模型,並且想要統計有多少文件連接到「主」模型,或者在這種情況下,該類別是Question

+1

你能嘗試使用'數= Question.choice_set.count()'? –

+0

@anishshah我添加的代碼是一個假設模型,在我的情況下,'Choice'類實際上是一個文件存儲模型,我想要統計有多少文件鏈接到「Question」模型。所以choice_set在這裏不起作用。 – IPDGino

回答

2

list_display選項允許您指定ModelAdmin本身的功能以顯示爲列。你甚至不需要在你的Question型號上定義該功能,如果你只需要它爲你的ModelAdmin

docs of list_display:正被顯示的對象:

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('upper_case_name',) 

    def upper_case_name(self, obj): 
     return ("%s %s" % (obj.first_name, obj.last_name)).upper() 
    upper_case_name.short_description = 'Name' 

list_display屬性指定的功能將與一個單一的參數來調用。你可以得到你的反向關係使用RelatedManager.count其相關實例數:

return obj.choice_set.count() 
+0

我明白'list_display'的這部分是如何工作的。然而,OP中的主要問題是如何計算模型所具有的關係數量。 – IPDGino

+0

對不起,我沒有正確理解文檔和你的答案。我現在明白一個模型有能力看到與'obj。(modelname in lowercase)_set.count()'的關係。我接受了你的答案。 – IPDGino