多对多 ManyToManyField
models.py
from django.db import models
class UserInfo(models.Model):
username=models.CharField(max_length=30)
password=models.CharField(max_length=30)
email=models.CharField(max_length=30)
class UserGroup(models.Model):
GroupName=models.CharField(max_length=30)
user=models.ManyToManyField(UserInfo) #多对多关系字段
生成的用户组表 生成的用户信息表
注意:如上图所示,Django 定义 的 ManyToManyField 字段并没有在 UserGroup 表中生成
UserGroup 跨表取值
u = models.UserGroup.user.all() QuserSet 对象,内部为列表
for i in u:
u.username
给两个实例对象建立关系
views.py
from django.shortcuts import render,HttpResponse
from app01 import models
def index(request):
g1=models.UserGroup.objects.get(id=1)
u1=models.UserInfo.objects.get(id=1)
g1.user.add(u1) #给2个实例对象,建立多对多关系
return HttpResponse('添加关系成功')
方法1: g1.user.add(u1) 有多对多字段 含义如下图所示
删除
remove() 如 :g1.user.remove(u1) ,g1.user.remove(2,3) ,g1.user.remove(*[1,2,3])
clear() 删除所有
改set() 如:g1.user.set(u1)
方法2:u1.usergroup_set.add(g1) 无多对多字段 注意这里是1个下划线