码迷,mamicode.com
首页 > 其他好文 > 详细

Django start project

时间:2017-08-25 21:03:18      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:super   连接   admin   nbsp   man   默认   数据库   max   dynamic   

创建一个图书管理的项目

技术分享

 

 出现如下目录

技术分享

新建一个应用app

技术分享

技术分享

 

 项目和应用已经创建好了,

现在让我们开始写app

first  design your models

from django.db import models

# Create your models here.
class Author(models.Model):
    name=models.CharField(max_length=30)
    def __str__(self):
        return self.name
class Publisher(models.Model):
    name=models.CharField(max_length=40)
    city=models.CharField(max_length=40)
    def __str__(self):    在Python2中是__unicode__
        return self.name
class Book(models.Model):
    title=models.CharField(max_length=30)
    price=models.DecimalField(max_digits=6,decimal_places=3)
    publish=models.ForeignKey(Publisher,on_delete=models.CASCADE)
class BooktoAuthor(models.Model):
    book=models.ForeignKey(Book,on_delete=models.CASCADE)
    auth=models.ForeignKey(Author,on_delete=models.CASCADE)

 

 将app加入到installed_app中,设置mysql为连接的数据库,创建一个数据库从mysql中

然后执行

>> python manage.py makemigrations

>> python manage,py migrate

迁移成功,表创建完成

 

 django 为我们提供了一个free and rich python API 

技术分享

 

 技术分享

以上是创建了一些记录

关于manytomany relationship  

一种方法是使用ManytoManyField方法

from django.db import models

# Create your models here.
class Author(models.Model):
    name=models.CharField(max_length=30)
    def __str__(self):
        return self.name
class Publisher(models.Model):
    name=models.CharField(max_length=40)
    city=models.CharField(max_length=40)
    def __str__(self):
        return self.name


class Book(models.Model):
    title=models.CharField(max_length=30)
    price=models.DecimalField(max_digits=6,decimal_places=3)
    publish=models.ForeignKey(Publisher,on_delete=models.CASCADE)
    auth=models.ManyToManyField(Author,through=BooktoAuthor)
    def __str__(self):
        return self.title
class BooktoAuthor(models.Model):
    book=models.ForeignKey(Book,on_delete=models.CASCADE)
    auth=models.ForeignKey(Author,on_delete=models.CASCADE)
    pubdate=models.DateField(default=2010-01-01)

关于models.ManyToManyField 有一个through option   如果你的中间表需要额外的列,你的需求在这个中间表多加几列,你可以使用through这个参数,如果不加,会默认创建一个中间表,以各自的id为中间标的外键

关于models.ForeignKey  有一个参数需要注意就是on_delete   默认为None ,  如果是None ,Django 认为是CASCADE(级联)删除,处了级联删除还有protect  set_null

所谓级联删除,是当你删除父表的信息时,字表相关联的记录也会被删除,这是为了实现SQL的外键的引用完整性

所谓引用完整性,指子表中不能插入孤立的行,或者使子表出现孤立的行,孤立的行,是说这个行的外键在父表中找不到相关的行

技术分享

 a dynamic admin 

创建超级用户

python manage.py createsuperuser

用户名administrator密码15166672108a

 

Django start project

标签:super   连接   admin   nbsp   man   默认   数据库   max   dynamic   

原文地址:http://www.cnblogs.com/yuyang26/p/7429562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!