Model structure for Player Team and Match in football application
It is difficult to say how good your models are, since it depends on your application requirements and demands, current and future/planned use cases. 

But, few points from the top of my head:


there are some important fields missing - for example, team names
I don't particularly like the TeamMatch model. Instead, I'd expect the Match to have links to the home and away teams:

class Match(models.Model):
    home_team = models.ForeignKey(Team, related_name='home_matches')
    away_team = models.ForeignKey(Team, related_name='away_matches')

    date = models.DateField(default=now)

    def __str__(self):
        return "Match between '%s' and '%s' on %s" % (self.home_team.name, self.away_team.name, self.date)

you will also need some way of keeping the score of a match. A separate MatchResult model?
how about a use case when a player moves from one team to another? If this is something you want to keep track of, you would probably need something like a PlayerContract model to relate players and teams for a certain period of time


Also, please see these similar model design discussions:


How should I design my django models for team, player and match objects?
Models for a team