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

      总结:

  • 相关阅读:
    用java的眼光看js的oop
    SpringBoot YAML文件特殊类型配置
    【框架】一种通知到多线程框架
    【网络基础】数据包生命
    【网络编程】TCPIP-小笔记集合
    【网络编程】TCPIP-8-套接字的多种选项
    【网络编程】TCPIP-7-域名与网络地址
    【网络编程】TCPIP-6-TCP的半关闭
    Web应用安全防护-WAF
    漫画 | 这样的程序员男友,让我分分钟想剖腹自尽!
  • 原文地址:https://www.cnblogs.com/homle/p/8614036.html
Copyright © 2011-2022 走看看