Python/Django AttributeError"对象'玩家'没有属性'字段'

Cal*_*ods 9 python django django-admin

我正在设置管理页面,以便我可以使用它来添加数据,在这种情况下是玩家.当你去尝试在admin.py中注册Players类时,你会得到问题标题中描述的错误(对象'players'没有属性'fields').通过views.py查看我从下面粘贴了一个片段,我看不出它可能指的是什么.

对不起,如果这是一个noob问题,我对django和python都很新.

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)
Run Code Online (Sandbox Code Playgroud)

Cal*_*ods 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)
Run Code Online (Sandbox Code Playgroud)

后:

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)
Run Code Online (Sandbox Code Playgroud)

  • ``admin.site.register((队员,球员))``应该也可以. (2认同)

sme*_*ing 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'
Run Code Online (Sandbox Code Playgroud)

这个错误确实来自这条线,

admin.site.register(Teams, Players)
Run Code Online (Sandbox Code Playgroud)

但更具体地来说,事实上,如你所做的那样配对两个模型意味着一些相当具体的事实,即第二个对象(这里是玩家)是与第一个对象相关联的模型管理对象(这里是团队,总是一个Django模型).模型管理对象必须具有属性"fields",该属性提供有关在使用管理界面时如何显示单个模型的属性字段的信息.由于Players不是模型管理对象,并且没有名为'fields'的属性,因此Djagno引发了异常.点击此处获取更多信息.

正如您所猜测的那样,快速解决这种情况,将它们分成不同的寄存器调用:

admin.site.register(Teams)
admin.site.register(Players)
Run Code Online (Sandbox Code Playgroud)


use*_*348 -1

您设置了 ModelAdmin 吗?

类 PlayersAdmin(admin.ModelAdmin):