首页 > 其他 > 详细

Django -- 多对多建表增删改查

时间:2019-08-28 21:25:52      阅读:92      评论:0      收藏:0      [点我收藏+]

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)

 

 

Django -- 多对多建表增删改查

原文:https://www.cnblogs.com/Agoni-7/p/11426125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!