2010-09-01 17 views
9

我正在設置管理頁面,以便我可以使用它來添加數據,玩家在這種情況下當您嘗試註冊時在admin.py中的Players類會得到問題標題中描述的錯誤(object'players'沒有屬性'fields')。通過views.py查看我從下面粘貼了一段代碼,但是我沒有看到它可能是什麼被提及。Python/Django AttributeError「對象'玩家'沒有屬性'字段'

很抱歉,如果這是一個小白的問題,我是很新,既Django和蟒蛇。

class Players(models.Model): 
    player_id  = models.IntegerField(primary_key=True) 
    firstname  = models.CharField(max_length=50) 
    lastname   = models.CharField(max_length=50) 
    team    = models.ForeignKey(Teams) 
    Top200rank  = models.IntegerField(null=True, blank=True) 
    position   = models.CharField(max_length=25) 
    roster_status = models.ForeignKey(RosterStatus, null=True, blank=True) 
    class Meta: 
     ordering = ('lastname', 'firstname') 
     verbose_name_plural = 'Players' 

    def __unicode__(self): 
     return u"%s %s" % (self.firstname, self.last_name) 
+0

提供您的管理員註冊碼。這似乎是那裏的問題。 – 2010-09-01 16:36:54

+0

而「__unicode__」應該是方法,而不是全局函數。只是縮進它的權利。 – 2010-09-01 16:38:18

+0

@Vadim 這是縮進我只是沒有在我的貼上滑過它。我似乎通過將玩家移到admin.py的註冊行來解決這個問題。 – CaleyWoods 2010-09-01 16:55:22

回答

-1

你有沒有設置一個的ModelAdmin?

類PlayersAdmin(admin.ModelAdmin):

11

修復在admin.py,見下文。

前:

#foozball admin python file 

from foozball.leaguemanager.models import Division, Games, RosterStatus, Teams, Players 
from django.contrib import admin 

admin.site.register(Teams, Players) 

後:

foozball管理Python文件

from foozball.leaguemanager.models import Division, Games, RosterStatus, Teams, Players 
from django.contrib import admin 

admin.site.register(Teams) 
admin.site.register(Players) 
+2

''admin.site.register((隊,球員))''也應該工作。 – Wytse 2011-10-24 10:18:45

5

你得到特定的錯誤是很重要的:

Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/ 
Exception Type: AttributeError 
Exception Value:  
type object 'Player' has no attribute 'fields' 

這個錯誤不會來fr OM線,

admin.site.register(Teams, Players) 

但更具體來自於一個事實,即配對兩款車型爲您做意味着相當具體的東西,即第二個對象(在這裏玩家)與第一物體關聯的模型管理對象(這裏是團隊,總是一個Django模型)。模型管理對象必須具有「字段」屬性,該屬性提供有關在使用管理界面時如何顯示單個模型的屬性字段的信息。由於玩家不是模型管理對象,並且沒有名爲'fields'的屬性,所以Djagno引發異常。 Click here for more information

要快速解決這種情況是因爲你已經猜到,將它們分成不同的寄存器電話:

admin.site.register(Teams) 
admin.site.register(Players) 
1

我得到了相同的錯誤消息,在我來說,我忘了我的繼承類管理從models.Admin

前:

from django.contrib import admin 

class TeamAdmin: 
    fields = ['name', 'age'] 

AFTE r:

from django.contrib import admin 

class TeamAdmin(admin.ModelAdmin): 
    fields = ['name', 'age'] 
相關問題