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

      总结:

  • 相关阅读:
    跨平台GUIQt windows 开发环境安装配置(Eclipse CDT+ MinGW+QT) (转载)
    跨平台GUIQt windows 开发环境安装配置(VS2005+QT+IntegrationPlugin)(转载)
    跨平台GUIQt ACER Aspire on Linux 开发环境安装配置(QT + GCC ) (原创)
    移动视频监控(2)原型开发Symbian客户端进展。
    编程语言大串联(1)C#,Java,C++
    优化页面上的sql
    一个段错误调试
    查询数据库空间
    shell 批量替换多个文件中字符串
    用户组相关
  • 原文地址:https://www.cnblogs.com/homle/p/8614036.html
Copyright © 2011-2022 走看看