在关系表中添加数据和删除数据的两种方式
在models.py中创建两个表,其中在UserGroup表中通过user字段和User表建立多对多关系。
class User(models.Model): username = models.CharField(max_length=50) password = models.CharField(max_length=50) email = models.EmailField() def __str__(self): return 'u %s %s' % (self.username,self.password) class UserGroup(models.Model): GroupName = models.CharField(max_length=50) user = models.ManyToManyField('User') def __str__(self): return 'u %s' % self.GroupName
1. 在视图函数中,对关系表添加数据的两种方式
方式一:
from user import models def index(request): u1 = models.User.objects.get(id=5) g1 = models.UserGroup.objects.get(id=1) g1.user.add(u1) g2 = models.UserGroup.objects.get(id=2) g2.user.add(u1) return HttpResponse('successful')
在数据库中查看添加两条记录
方式二:通过ManyToMany字段所在关系表的小写+_set
from user import models def index(request): g2 = models.UserGroup.objects.get(id=2) u2 = models.User.objects.get(id=6) u2.usergroup_set.add(g2) return HttpResponse('successful')
查看生成记录
2. 在视图函数中对关系表删除数据的两种方式
方式一:
from user import models def index(request): u1 = models.User.objects.get(id=3) g1 = models.UserGroup.objects.get(id=1) g1.user.remove(u1) return HttpResponse('successful')
查看生成记录,可以看到usergroup_id 3,user_id 1已经被删除
方式二
from user import models def index(request): u2 = models.User.objects.get(id=2) g2 = models.UserGroup.objects.get(id=2) u2.usergroup_set.remove(g2) return HttpResponse('successful')
查看生成记录,可以看到user_id 2和usergroup_id 2已经被删除
g2 = models.UserGroup.objects.get(id=2) print(g2.user.all()) print(g2.user.all().filter(id=1))
分别获取到关系表中usergroup_id 为2,所对应的user表中的数据和user表中id为1的数据
<QuerySet [<User: u hq 123>, <User: u he 456>, <User: u ht 567>, <User: u hu 478>]>
<QuerySet [<User: u hq 123>]>
总结: