# 迁移模型之后 ,数据库会多出一个表 应用名_表明_外键 #例如: home_users_uid
# 书籍
class Books(models.Model):
title = models.CharField(max_length=50)
author = models.CharField(max_length=50)
# 标签
class Tags(models.Model):
name = models.CharField(max_length=10)
# 多对多关系定义
bid = models.ManyToManyField(to="Books")
def __str__(self):
return '<Tags: '+self.name+' object>'
# 多对多的操作
def manymomany(request):
# 添加
# # 创建书籍
# b1 = Books(title='<<Python3.7从零开始学>>',author='刘宇宙')
# b2 = Books(title='<<学PHP>>',author='哒哒哒')
# b1.save()
# b2.save()
# # 创建标签
# t1 = Tags(name='Python')
# t2 = Tags(name='计算机编程')
# t3 = Tags(name='PHP')
# t1.save()
# t2.save()
# t3.save()
# # 给书籍添加标签
# t1.bid.add(b1)
# t2.bid.add(b1)
# t2.bid.add(b2)
# t3.bid.add(b2)
# 查询
# 通过书 获取当前书下的所有标签
# b = Books.objects.first()
# print(b.title)
# print(b.author)
# print(b.tags_set.all())
# 通过标签.获取当前标签下的所有书
# t = Tags.objects.get(id=2)
# print(t.name)
# # 注意,在使用有外键的模型进行相关查询时,使用外键属性即可
# print(t.bid.all())
# 如果删除关系中的任何一个数据,对另外一个表数据不产生影响,但是会删除对应的关系数据
# b = Books.objects.first()
# b.delete()
return HttpResponse('多对多的操作')
django 多对多 关系操作物理外键
最新推荐文章于 2022-08-15 16:41:39 发布