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

      总结:

  • 相关阅读:
    .NET破解之太乐地图下载器【非暴破】
    DevExpress中透明玻璃效果
    mysql实时同步到mssql的解决方案
    求点云的边界的方法小结
    ArcEngine中License权限等级更改的问题
    汉化入门之ExplorerControls
    spring cloud ribbon和feign的区别
    IntelliJ IDEA 运行 Maven 项目
    Python中操作SQLAlchemy
    MySQL 可以用localhost 连接,但不能用IP连接的问题,局域网192.168.*.* 无法连接mysql
  • 原文地址:https://www.cnblogs.com/homle/p/8614036.html
Copyright © 2011-2022 走看看