2013-03-14 41 views
6

我無法弄清楚我在這裏做錯了什麼。我的錯誤是:在/ admin /'錯誤地配置了CategoryAdmin.fields'必須是列表或元組。這不是一個元組嗎?

是不是CategoryAdmin.fields元組?我看到這個錯誤嗎?

admin.py ..

class CategoryAdmin(admin.ModelAdmin): 
    fields = ('title') 
    list_display = ('id', 'title', 'creation_date') 

class PostAdmin(admin.ModelAdmin): 
    fields = ('author', 'title', 'content') 
    list_display = ('id', 'title', 'creation_date') 

admin.site.register(
    models.Category, 
    CategoryAdmin 
) 
admin.site.register(
    models.Post, 
    PostAdmin 
) 
+9

5千行1回答關注... – 2013-03-14 14:30:39

+0

@HenryGomersall哈哈 – JREAM 2013-03-14 14:38:46

+0

@HenryGomersall:12分鐘內4 ...不錯。 – BenDundee 2013-03-14 14:43:50

回答

14

不,事實並非如此。您需要添加一個逗號:

fields = ('title',) 

這是逗號,使這個元組。括號實際上只是可選的位置:

>>> ('title') 
'title' 
>>> 'title', 
('title',) 

括號當然仍然是一個好主意,用括號元組是容易直觀地發現,並且圓括號區分來自其他參數的函數調用的元組(foo(('title',), 'bar')是不同於foo('title', 'bar'))。

+0

這也是製造二元組的逗號。 'a ='foo','bar'' - 這些parens只是爲了避免其他地方的語法歧義(如函數調用) – mgilson 2013-03-14 14:31:36

+0

@mgilson圓括號還使元組更易讀IMO – dmg 2013-03-14 14:33:24

+0

Ahhhh !!!!謝謝!!! – JREAM 2013-03-14 14:38:15

4

它應該是:

fields = ('title',) 

例子:

In [64]: type(('title')) 
Out[64]: str 

In [65]: type(('title',)) 
Out[65]: tuple 
3

這種替換:

fields = ('title',) 
3

您需要的標題後加上逗號:

fields = ('title',)