django 表的多对多关系创建和主从表相互查询

在modes中创建类,如下:

#构建team表,作为主表
class Team(models.Model):
    #创建名字属性
    tname = models.CharField(max_length=20)
    #重写__str__方法,方便观看结果
    def __str__(self):
        return self.tname
    #定义表名
    class Meta:
        db_table = 'team'

#构建project表,作为从表
class Project(models.Model):
    pname = models.CharField(max_length=30)
    #使用ManyToManyField创建多对多关系
    #因是多对多关系,迁移文件时会多产生一张中间表
    group1 = models.ManyToManyField(Group1)

    def __str__(self):
        return self.pname

    class Meta:
        db_table = 'project'

主从表相互查询

def querygroup(request):
    # 反向查询
    # 获取项目
    p1 = Project.objects.get(pk=3)
    #通过项目获取组信息
    g1 = p1.group1.all()
    return HttpResponse(g1)

    # 正向查询
    # 组信息
    # g2 = Group1.objects.get(pk=1)
    # # 带_set的是从表
    # p2 = g2.project_set.all()

    #return HttpResponse(g1)

总结:基本语法:

反向查询:从表对象.主表类名小写.过滤器

正向查询:主表对象.从表类名小写_set.过滤器

猜你喜欢

转载自blog.csdn.net/chen1042246612/article/details/84144507