1

この 4 つのモデルをクエリで「結合」しようとしています。私の出発点は Team.id です。SkillRecord を結果に取得しようとしていますが、完全に失われています。

class Team(models.Model):
    user        = models.ForeignKey(User)
    id          = models.IntegerField(primary_key=True, null=False, unique=True)
    ...

class Player(models.Model):
    id              = models.IntegerField(primary_key=True)
    ...

class Transfer(models.Model):
    player          = models.ForeignKey(Player)
    seller          = models.ForeignKey(Team, related_name='transfer_seller')
    buyer           = models.ForeignKey(Team, related_name='transfer_buyer')
    date            = models.DateTimeField()
    ...

class SkillRecord(models.Model):
    player          = models.ForeignKey(Player)
    date            = models.DateTimeField(default=datetime.datetime.now)
    ...

これまでの私の謙虚なアプローチは次のとおりです

    def list_players(request, teamid):
        team = get_object_or_404(Team, id=teamid)
        players_transfers = Transfer.objects.filter(buyer=team).select_related('player')

SkillRecord モデルをゲームに組み込むための次のステップがどうなるかはよくわかりません。私はそのような問題の基本的な要点を欠いているように見えるので、突く必要があると思います.

また、これを行う方法についてさらにアイデアを教えてください。manytomanyfieldsなどを使用して、この転送全体を解決できると多かれ少なかれ確信しています。

どうもありがとう

4

2 に答える 2

0

SkillRecord も取得するには、 related_name を追加する必要があります:

class SkillRecord(models.Model):
    player          = models.ForeignKey(Player, related_name='skills')
    date            = models.DateTimeField(default=datetime.datetime.now)

次に、クエリを作成します。

qt = Transfer.objects.filter(...).select_related('player').prefetch_related('player__skills')

次に、次のように取得します。

qt[0].player.skills.all()
于 2013-09-05T11:12:46.017 に答える