zoukankan      html  css  js  c++  java
  • django 多表操作

    在关系表中添加数据和删除数据的两种方式

    在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>]>

      总结:

  • 相关阅读:
    docker运行爬虫代码
    python语法之流程控制(if while for)
    python基本数据类型
    python基本运算符
    python用户交互与格式化输出
    jieba模块基本介绍
    wordcloud库基本介绍
    计算机基础之编程语言
    计算机基础
    python入门之流程控制
  • 原文地址:https://www.cnblogs.com/homle/p/8614036.html
Copyright © 2011-2022 走看看