首页 > 其他 > 详细

django图书管理系统模型创建

时间:2019-11-19 21:49:22      阅读:109      评论:0      收藏:0      [点我收藏+]

 

图书管理系统, 模型创建

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;

 

django图书管理系统模型创建

原文:https://www.cnblogs.com/harryTree/p/11892373.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!