zoukankan      html  css  js  c++  java
  • ORM 一对一的表间关系和多对多表间关系

    把数据表中一些使用不频繁的字段单独拿出来,做成一张表,然后原表用一对一的方式与这张新表进行关联

     1 class Author(models.Model):
     2     aid=models.AutoField(primary_key=True)
     3     aname=models.CharField(max_length=64,null=False,unique=True)
     4     book=models.ManyToManyField(to='Book')
     5     info = models.OneToOneField(to='AuthorInfo')
     6 
     7     def __str__(self):
     8         return '<Author Object:{}'.format(self.aname)
     9 
    10 class AuthorInfo(models.Model):
    11     holiday=models.CharField(max_length=48)
    12     addr=models.CharField(max_length=128)

     多对多表间关系:

    1,可以让Django框架自动生成

    2,可以自己手动创建第三张关系表,则无法使用内置的方法

    3,可以使用Django的 ManyToManyField方法,但指定创建表的关系属性列 自定义,add和remove无法使用

     1 class Book(models.Model):
     2     bid=models.AutoField(primary_key=True)
     3     bname=models.CharField(max_length=48,null=False,unique=True)
     4     press=models.ForeignKey(to='Press',related_name='books')    #外键关系
     5     price = models.DecimalField(max_digits=5, decimal_places=2, default=99.99)
     6     kucun=models.IntegerField(default=9999)
     7     sale=models.IntegerField(default=0)
     8 
     9 
    10     def __str__(self):
    11         return '<Book Object:{}'.format(self.bname)
    12 
    13 class Author(models.Model):
    14     aid=models.AutoField(primary_key=True)
    15     aname=models.CharField(max_length=64,null=False,unique=True)
    16     book=models.ManyToManyField(to='Book')
    17     info = models.OneToOneField(to='AuthorInfo')
    18     books=models.ManyToManyField(to='Book',through='Author_Book',through_fields=('author','book'))
    19 
    20     def __str__(self):
    21         return '<Author Object:{}'.format(self.aname)

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>指定第三张关系表:

    1 class Author_Book(models.Model):
    2     id=models.AutoField(primary_key=True)
    3     author=models.ForeignKey(to='Author')  #默认就是使用的id值
    4     book=models.ForeignKey(to='Book')
  • 相关阅读:
    SSH的密钥登录配置
    VMware 15pro虚拟机网络设置
    12种SQL注入报错方式
    PHP myadmin 无路径getshell
    MySQL数据库基本操作
    ubuntu 16.04安装后的简单优化
    无聊中,静思自己。
    Silverlight 4.0+Linq to sql 网站后台登陆功能(一)
    AspNetPager和Linq to sql 的完美结合
    Linq to sql 的DataContext 持久化层写法
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9597218.html
Copyright © 2011-2022 走看看