玩家团队模型关系



我正在构建一个数据库,以显示在线游戏的比赛。我有三个问题;

第一个,我应该使用哪种方法

class Player(models.Model):
        team=models.ForeignKey(Team,related_name='player',verbose_name='Team')

 class Team(models.Model):
        player=models.ManyToManyField(Player)

第三;我的团队与球员之间的桌子看起来正确吗?最后的;在这些桌子之后,我将在比赛和比赛之间制作桌子。比赛与团队之间的关系

class OnlineGame(models.Model):
    game_name=models.CharField(max_length=120)

class Team(models.Model):
    name=models.CharField(max_length=255,verbose_name="Takım ismi")
    slug=models.SlugField(max_length=120,unique=True)
    bio=models.TextField()
    country=models.CharField(max_length=50)
    logo=models.ImageField(null=True,blank=True,upload_to='team')
    background=models.ImageField(null=True,blank=True,upload_to='team')
    extra=models.CharField(null=True,blank=True,max_length=150)
    website=models.CharField(null=True,blank=True,max_length=120)
    game=models.ManyToManyField(OnlineGame)#manytomany because team have one or more online game team (for example sk gaming have lol and counter-strike team
    def get_unique_slug(self):
        slug=slugify(self.name.replace('ı','i'))
        unique_slug=slug
        counter=1
        while Team.objects.filter(slug=unique_slug).exists():
            unique_slug='{}-{}'.format(slug,counter)
            counter+=1
        return slug
    def __str__(self):
        return self.team_name

class PlayerGameRole(models.Model):
    role=models.CharField(max_length=50)
class Player(models.Model):
    slug=models.SlugField(unique=True,max_length=120)
    nickname=models.CharField(max_length=120)
    first_name=models.CharField(max_length=120)
    last_name=models.CharField(max_length=50)
    birthday=models.DateField(null=True,blank=True)
    picture=models.ImageField(null=True,blank=True,upload_to='player')
    country=models.CharField(max_length=50)
    role=models.ManyToManyField(PlayerGameRole)
    team=models.ForeignKey(Team,related_name='player',verbose_name='Team')
    twitch=models.URLField(null=True,blank=True)
    facebook=models.URLField(null=True,blank=True)
    twitter=models.URLField(null=True,blank=True)
    extra=models.CharField(max_length=150)
    game=models.ManyToManyField(Game)
    def get_unique_slug(self):
        slug=slugify(self.nickname.replace('ı','i'))
        unique_slug=slug
        counter=1
        while Player.objects.filter(slug=unique_slug).exists():
            unique_slug='{}-{}'.format(slug,counter)
            counter+=1
        return slug

    def age(self):
        import datetime
        return int((datetime.date.today() - self.birthday).days / 365.25)

我认为您应该在玩家模型中使用ManyTomany字段类型,如果玩家可以同时参加几个团队。比赛和球队之间的关系也应该是多米马尼,因为一支球队可以参加几场比赛,并且可以由几支球队进行比赛。

最新更新