在學習開發django的時候,碰到了這個問題,源碼:
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
def post_count(self, obj):
return obj.post_set.count()
post_count.short_description = '文章數量'
list_display = ('name', 'status', 'is_nav', 'created_time', post_count)
fields = ('name', 'status', 'is_nav')
def save_model(self, request, obj, form, change):
obj.owner = request.user
return super(CategoryAdmin, self).save_model(request, obj, form, change)
然後報錯從字面意思看是少了一個參數,django的自定義函數就是這樣子的啊,後面發現在
list_display = ('name', 'status', 'is_nav', 'created_time', post_count)中,我寫的post_count是屬性不是字符,而其他的參數都是字符串,就好奇把這個改了下,結果就成功了.
list_display = ('name', 'status', 'is_nav', 'created_time', 'post_count')
後面去搜索.大概的意思是這裏django用了反射,從字符串去找到相應的屬性或方法,原來反射是在這裏用的,大開眼界.