zoukankan      html  css  js  c++  java
  • django图书管理系统模型创建

    图书管理系统, 模型创建

    1、在settings.py里面设置数据库连接

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': "test",
            "USER": "root",
            "PASSWORD": "123321",
            "HOST": "127.0.0.1",
            "PORT" : "3306" ,
        }
    }

    2、创建一个app02, 并在settings.py里面设置; 在app02/models.py里面模型如下:

    from django.db import models
    
    # Create your models here.
    
    class Book(models.Model):
        name = models.CharField(max_length=32)
        price = models.DecimalField(max_digits=8, decimal_places=2)
        publish_date = models.DateTimeField( auto_now_add= True)
        #添加表关联关系
        publish = models.ForeignKey( to='Publish' )
        authors = models.ManyToManyField( to='Author')
    
    
    class Publish( models.Model):
        name = models.CharField(max_length=32)
        addr = models.CharField(max_length=64)
        email = models.EmailField()  #内部实现也是charField,定义为EmailField是为了表单校验
    
    class Author(models.Model):
        name = models.CharField(max_length=32)
        age = models.IntegerField()
        #添加表关联关系
        authordetail = models.OneToOneField( to='AuthorDetail')
    
    
    #切表,是因为不常用的数据单独放一张表, 对经常用的数据也单独放一张表,提高查询的效率
    class AuthorDetail(models.Model):
        addr = models.CharField(max_length=32)
        phone = models.IntegerField()

    执行makemigrations和migrate同步数据,查看创建模型表的源码:

    D:kindeditor_pro>python manage.py sqlmigrate app02 0001
    BEGIN;
    --
    -- Create model Author
    --
    CREATE TABLE `app02_author` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(32) NO
    T NULL, `age` integer NOT NULL);
    --
    -- Create model AuthorDetail
    --
    CREATE TABLE `app02_authordetail` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `addr` varchar(
    32) NOT NULL, `phone` integer NOT NULL);
    --
    -- Create model Book
    --
    CREATE TABLE `app02_book` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(32) NOT
    NULL, `price` numeric(8, 2) NOT NULL, `publish_date` datetime(6) NOT NULL);
    CREATE TABLE `app02_book_authors` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `book_id` integ
    er NOT NULL, `author_id` integer NOT NULL);
    --
    -- Create model Publish
    --
    CREATE TABLE `app02_publish` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(32) N
    OT NULL, `addr` varchar(64) NOT NULL, `email` varchar(254) NOT NULL);
    --
    -- Add field publish to book
    --
    ALTER TABLE `app02_book` ADD COLUMN `publish_id` integer NOT NULL;
    --
    -- Add field authordetail to author
    --
    ALTER TABLE `app02_author` ADD COLUMN `authordetail_id` integer NOT NULL UNIQUE;
    ALTER TABLE `app02_book_authors` ADD CONSTRAINT `app02_book_authors_book_id_55aef806_fk_app02_book_i
    d` FOREIGN KEY (`book_id`) REFERENCES `app02_book` (`id`);
    ALTER TABLE `app02_book_authors` ADD CONSTRAINT `app02_book_authors_author_id_191af2fa_fk_app02_auth
    or_id` FOREIGN KEY (`author_id`) REFERENCES `app02_author` (`id`);
    ALTER TABLE `app02_book_authors` ADD CONSTRAINT `app02_book_authors_book_id_author_id_1a895ee1_uniq`
     UNIQUE (`book_id`, `author_id`);
    ALTER TABLE `app02_book` ADD CONSTRAINT `app02_book_publish_id_79be7951_fk_app02_publish_id` FOREIGN
     KEY (`publish_id`) REFERENCES `app02_publish` (`id`);
    ALTER TABLE `app02_author` ADD CONSTRAINT `app02_author_authordetail_id_2bc028c9_fk_app02_authordeta
    il_id` FOREIGN KEY (`authordetail_id`) REFERENCES `app02_authordetail` (`id`);
    COMMIT;
  • 相关阅读:
    navigator
    历史记录跳转
    更改URL
    计数器
    窗口位置和大小
    open用法
    confirm用法
    项目中访问本地node服务跨域问题
    jenkins使用
    基于Vue的SSR
  • 原文地址:https://www.cnblogs.com/harryTree/p/11892373.html
Copyright © 2011-2022 走看看