Django admin自定義函數報錯,TypeError: post_count() missing 1 required positional argument: 'obj'

在學習開發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用了反射,從字符串去找到相應的屬性或方法,原來反射是在這裏用的,大開眼界.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章