2013-07-10 35 views
0

我正在測試Django應用程序CatDB。我每個「所有者」類都有一個變量,即將所有者列爲其所有者的貓的數量。Python/Django - 使用某個對象作爲外鍵的其他對象的計數

在我Models.py: 從django.db進口車型

class Owner(models.Model): 
    name = models.CharField(max_length=50) 
    age = models.IntegerField() 
    location = models.CharField(max_length=50) 
    def __str__(self): 
     return self.name 
    def num_cats(self): //This is the line in question 
     return cat_set.count() 

class Cat(models.Model): 
    name = models.CharField(max_length=50) 
    owner = models.ForeignKey(Owner) 
    age = models.IntegerField() 
    color = models.CharField(max_length=30) 
    def __str__(self): 
     return self.name 

我試圖用一個變量稱爲num_cats做到這一點,但它不是工作。

而且,在我Admin.py:

from django.contrib import admin 
from catdb.models import Cat, Owner 


class OwnerAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     ('Basic information', {'fields': ['name','location'], 'classes': ['collapse']}), 
    ] 
    list_display = ('name','location','num_cats') //Use num_cats as a column in the list 


admin.site.register(Owner, OwnerAdmin) 
admin.site.register(Cat) 

我怎樣才能正確地實現這一點?

回答

2

相反的cat_set.count()你需要self.cat_set.count()所以它應該是:

def num_cats(self): 
    return self.cat_set.count() 
+0

這個工作,謝謝! –

相關問題