django多对多关系查询反向

时间:2018-12-18 02:04:34

标签: python django python-2.7 relationship

我对django有疑问,我想在其中使用某些关系,而我对该任务感到非常困惑。

我有两张桌子,一张桌子是ball,另一张table是体育场,在我的问题中,一个体育场可能有很多球,一个球可能有很多体育场。

这是我的模特:

class ball(models.Model):
    code_ball=models.CharField(max_length=150,unique=True)
    description_ball = models.CharField(max_length=254)
    made_country_ball= models.CharField(max_length=254)
    f_ball= models.CharField(max_length=254)
    rel= models.ManyToManyField(stadium)

class stadium(models.Model):
    code_stadium=models.CharField(max_length=150,unique=True)
    description_stadium = models.CharField(max_length=254)
    made_country_stadium= models.CharField(max_length=254)
    andress_stadium= models.CharField(max_length=254)
    team_stadium= models.CharField(max_length=254)

我的问题是如何创建查询视图以在html模板中显示该视图? 例如,在某些html页面中,需要显示表stadium中的所有详细信息,以及表code_ball中的description_balballs的全部或拳头ball

我不知道这样做很热,因为我没有将表stadium到表.NET Framework的外键,以某种方式我需要反向关系来创建新查询,任何知道如何?

2 个答案:

答案 0 :(得分:0)

如果要具有ManyToMany字段的全部功能,则应定义一个通过表docs。这不会改变任何东西,但会向您显示幕后真正发生的事情。因此,您可以根据需要使用Foreignkey关系。

答案 1 :(得分:0)

您必须具有两个表的关联实体。

class ball(models.Model):
    code_ball=models.CharField(max_length=150,unique=True)
    description_ball = models.CharField(max_length=254)
    made_country_ball= models.CharField(max_length=254)
    f_ball= models.CharField(max_length=254)
    rel= models.ManyToManyField(stadium, through='StadiumBall')

class stadium(models.Model):
    code_stadium=models.CharField(max_length=150,unique=True)
    description_stadium = models.CharField(max_length=254)
    made_country_stadium= models.CharField(max_length=254)
    andress_stadium= models.CharField(max_length=254)
    team_stadium= models.CharField(max_length=254)

class StadiumBall(models.Model):
    stadium = models.ForeignKey(stadium, on_delete=models.CASCADE)
    ball = models.ForeignKey(ball, on_delete=models.CASCADE)

Here is a documentation