Python / Django AttributeError "Объект" Players "не имеет атрибута" fields " - PullRequest
9 голосов
/ 01 сентября 2010

Я настраиваю страницу администратора, чтобы иметь возможность использовать ее для добавления данных, в данном случае игроков.Когда вы заходите и пытаетесь зарегистрировать класс Players в admin.py, вы получаете ошибку, описанную в заголовке вопроса (объект 'Players' не имеет атрибута 'fields').Просматривая views.py, который я вставил ниже, я не вижу, на что он может ссылаться.

Извините, если это нубский вопрос, я довольно новичок в обоих 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)

Ответы [ 4 ]

11 голосов
/ 01 сентября 2010

Исправление было в 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)

После:

файл Python администратора foozball

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

admin.site.register(Teams)
admin.site.register(Players)
5 голосов
/ 28 февраля 2011

Важна конкретная ошибка, которую вы получаете:

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

Эта ошибка происходит от строки,

admin.site.register(Teams, Players)

, но более конкретно следует из того факта, что соединение двух моделей, как вы это сделали, означает нечто довольно специфическое, а именно то, что второй объект (здесь игроки) является объектом администратора модели, связанным с первым объектом (здесь команды, всегда модель Django) ). Объект администратора модели должен иметь атрибут «поля», который дает информацию о том, как отображаются поля атрибутов отдельной модели при использовании интерфейса администратора. Поскольку Players не является объектом администрирования модели и не имеет атрибута с именем 'fields', Djagno вызывает исключение. Нажмите здесь для получения дополнительной информации .

Быстрое решение этой ситуации, как вы уже догадались, разделить их на разные регистровые вызовы:

admin.site.register(Teams)
admin.site.register(Players)
1 голос
/ 25 января 2013

Я получил то же сообщение об ошибке, в моем случае я забыл унаследовать мой класс администратора от models.Admin

До:

from django.contrib import admin

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

После:

from django.contrib import admin

class TeamAdmin(admin.ModelAdmin):
    fields = ['name', 'age']
0 голосов
/ 01 сентября 2010

Вы установили ModelAdmin?

Класс PlayersAdmin (admin.ModelAdmin):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...