1. 程式人生 > >django 表的多對多關係建立和主從表相互查詢

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.過濾器