Определения модели: упорядочение импорта избежать импортаError - PullRequest
0 голосов
/ 19 марта 2011

Возникли проблемы с корректной работой всего моего импорта. Они звонят друг другу, пока не определились.

match.models:

from player.models import Player

class Match(models.Model):
    player = models.ForeignKey(Player)

player.models:

class Player(models.Model):
    #yadda yadda

from match.models import Match
class Skill(models.Model):
    player = ForeignKey(Player)
    match = ForeignKey(Match)

Вот и все конфетные яблоки, отлично работает. Но затем я хотел добавить метод модели к Player :

class Player(models.Model):
    def get_skill():
        skill = Skill.objects.filter()

Теперь Умение не определено перед игроком. Перемещение Навык для определения его до Игрок (и, следовательно, импорт матча впереди него) прерывает Матч , потому что он должен импортировать Игрок который еще не определен.

File "...match/models.py", line 2, in <module>
    from player.models import Player
ImportError: cannot import name Player

Вы поняли идею.

Мне бы очень хотелось сохранить метод модели, я просто не знаю, как заставить работать весь импорт. Я думаю, я мог бы вытащить Skill из player.models в свое собственное, но это будет головной болью на данный момент, и я хотел бы знать, как это сделать правильно.

1 Ответ

2 голосов
/ 19 марта 2011

Lazy Relationships

match models.py

class Match(models.Model):
    player = models.ForeignKey('player.Player')

player models.py

class Skill(models.Model):
    player = ForeignKey('Player')
    match = ForeignKey('match.Match')

class Player(models.Model):
    #yadda yadda

    def get_skill():
       skill = Skill.object.filter()
...