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')
  • 相关阅读:
    致5年后的自己
    基础知识回顾——属性
    基础知识回顾——类和对象
    基础知识回顾——面向对象编程
    基础知识回顾——函数
    基础知识回顾——流程控制
    基础知识回顾——列表和字典
    基础知识回顾——元组和字符串
    基础知识回顾——通用序列操作
    XPath Checker和Firebug安装与使用
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9597218.html
Copyright © 2011-2022 走看看