ManyToManyField -- 自动创建第三张对应关系表
表结构
class Author(models.Model):
name = models.CharField(max_length=32)
books = models.ManyToManyField('Book') # 描述多对多关系,不生成字段,生成关系表
查询
def author_list(request):
all_author = models.Author.objects.all()
for author in all_author:
print(author) # Author object
print(author.pk) # 1 -- 数据对象ID
print(author.name) # 小白 -- 数据对象name
print(author.books) # app01.Book.None 关系管理对象
print(author.books.all()) # 所关联的所有对象 QuerySet列表
增加
def author_add(request):
if request.method == 'POST':
name = request.POST.get('name')
books = request.POST.getlist('books') # getlist 获取多个元素
author_obj = models.Author.objects.create(name=name) # 创建新作者
author_obj.books.set(books) # 给作者和书籍绑定关系[id,id],写在author_book表中
删除
def author_del(request):
pk = request.GET.get('pk')
models.Author.objects.filter(pk=pk).delete()
编辑
def author_edit(request):
pk = request.GET.get('pk')
obj = models.Author.objects.filter(pk=pk).first()
if request.method == 'POST':
name = request.POST.get('name')
books = request.POST.getlist('books')
obj.name = name
obj.save()
obj.books.set(books)