i'm trying to 'join' this 4 models in a query. My starting point is a Team.id. I am trying to get the SkillRecord into the result but i am completly lost.
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')
I'm not really sure what would be my next step to get the SkillRecord model into the game. I seem to lack the basic gist of those kind of problems so i will need a poke i guess.
Also, feel free to give me further ideas how to do this, i'm more or less sure i could also solve this whole Transfer thing using manytomanyfields or so.
Thanks a lot
To grab SkillRecord as well you need to add related_name:
class SkillRecord(models.Model):
player = models.ForeignKey(Player, related_name='skills')
date = models.DateTimeField(default=datetime.datetime.now)
then make the query:
qt = Transfer.objects.filter(...).select_related('player').prefetch_related('player__skills')
then retrieve them like so:
qt[0].player.skills.all()