Помощь модели Django - PullRequest
       10

Помощь модели Django

0 голосов
/ 27 мая 2010

Кто-нибудь знает, почему это не работает, как ожидалось.

Если я использую оболочку Python и делаю

team.game_set

или

team.games

Возвращает ошибку

AttributeError: 'Team' object has no attribute 'game'

Если я создаю объект Game и вызываю

game.home_team

возвращает правильный командный объект

Вот моя модель

class Team(models.Model):
    name = models.CharField(blank=True, max_length=100)

class Game(models.Model):
    home_team = models.ForeignKey(Team, related_name="home_team")

UPDATE

Я обновил режим, удалив related_name, и теперь я получаю эту ошибку

app.game: Accessor for field 'home_team' clashes with related field 'Team.game_set'. Add a related_name argument to the definition for 'home_team'.

1 Ответ

2 голосов
/ 27 мая 2010

Ну, вы установили атрибут related_name. Из документации :

ForeignKey.related_name
Имя , используемое для отношения от связанного объекта к этому . См. документацию по связанным объектам для полного объяснения и примера. Обратите внимание, что вы должны установить это значение при определении отношений на абстрактных моделях; и когда вы сделаете это, появится специальный синтаксис.

Так что, если вы хотите иметь доступ к объектам через. team.game_set Вы должны удалить этот параметр:

class Game(models.Model):
    home_team = models.ForeignKey(Team)

или вы получаете доступ к играм через атрибут home_team (но я полагаю, вы просто неправильно поняли значение related_name):

team.home_team

Если ваш класс будет иметь атрибут guest_team или несколько связей с Team в целом, вы должны установить связанное имя и, возможно, захотите иметь что-то вроде этого:

class Game(models.Model):
    home_team = models.ForeignKey(Team, related_name="home_games")
    guest_team = models.ForeignKey(Team, related_name="guest_games")

и затем вы можете получить доступ к играм через team.home_games и team.guest_games.

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