zoukankan      html  css  js  c++  java
  • Django里orm关系表创建

    Django里orm关系表创建

    from django.db import models
    
    # Create your models here.
    class Book(models.Model):
        title = models.CharField(max_length=32)
        # 总共八位 小数占两位
        price = models.DecimalField(max_digits=8,decimal_places=2)
    
        # 出版社和书是一对多的关系  外键字段键在多的一方
        publish_id = models.ForeignKey(to='Publish')  # to指定跟谁是外键关联的  默认关联的是表的主键字段
        """
        ForeignKey字段  django orm在创建表的时候 会自动给该字段添加_id后缀
        """
        # 书和作者是多对多的关系  外键字段建在任何一方都可以  但是 推荐你建在查询频率比较高的一方
        authors = models.ManyToManyField(to='Author')
        """authors字段仅仅是一个虚拟字段 不会再表中展示出来  仅仅是用来告诉django orm 书籍表和作者表示多对多的关系
            自动创建第三张表 
        """
    
    class Publish(models.Model):
        name = models.CharField(max_length=32)
        addr = models.CharField(max_length=255)
    
    
    class Author(models.Model):
        name = models.CharField(max_length=32)
        phone = models.BigIntegerField()
        # 一对一字段 建在哪张表都可以  但是推荐你建在 查询频率比较高的那张表
        author_detail = models.OneToOneField(to='AuthorDetail')
        """
            OneToOneField字段  django orm在创建表的时候 会自动给该字段添加_id后缀
    
            """
    
    class AuthorDetail(models.Model):
        addr = models.CharField(max_length=255)
        age = models.IntegerField()
    

    千万不能让自己的表里面的外键的字段名字设置为后缀_id,因为他会自动帮我们加上。

  • 相关阅读:
    Best Time to Buy and Sell Stock III
    Valid Palindrome
    Longest Substring Without Repeating Characters
    Copy List with Random Pointer
    Add Two Numbers
    Recover Binary Search Tree
    Anagrams
    ZigZag Conversion
    Merge k Sorted Lists
    Distinct Subsequences
  • 原文地址:https://www.cnblogs.com/chanyuli/p/11722573.html
Copyright © 2011-2022 走看看