加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 10:50:42 所属栏目:Python 来源:网络整理
导读:ManyToManyField -- 自动创建第三张对应关系表 表结构 class Author(models.Model): name = models.CharField(max_length=32 ) books = models.ManyToManyField( ‘ Book ‘ ) # 描述多对多关系,不生成字段,生成关系表 ? 查询 def author_list(request): all

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读