002---设计表结构

'''
关系:
图书---出版社
多对一:一个出版社对应多本书    外键字段放多的这一边
图书---作 者
多对多:一本书可以有多个作者   一个作者可以有多本书
'''

在app01的models.py创建表模型

 1 class Publish(models.Model):
 2     """
 3     出版社表
 4     """
 5     name = models.CharField(max_length=16, verbose_name='出版社')
 6     city = models.CharField(max_length=16, verbose_name='城市')
 7 
 8     def __str__(self):
 9         return self.name
10 
11 
12 class Author(models.Model):
13     """
14     作者表
15     """
16     name = models.CharField(max_length=16, verbose_name='作者')
17     age = models.CharField(max_length=16, verbose_name='年龄')
18 
19     def __str__(self):
20         return self.name
21 
22 
23 class Book(models.Model):
24     """
25     图书表
26     """
27     title = models.CharField(max_length=32, verbose_name="名称")
28     pub_date = models.DateField(verbose_name='出版日期')
29     price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name='价格')
30 
31     publish = models.ForeignKey(to='Publish', verbose_name='出版社', on_delete=models.CASCADE)
32     author = models.ManyToManyField(to='Author', verbose_name='作者')
33 
34     def __str__(self):
35         return self.title

此时还要告诉django要注册那个表。

项目目录下的settings.py注册app。

 1 # Application definition
 2 
 3 INSTALLED_APPS = [
 4     'django.contrib.admin',
 5     'django.contrib.auth',
 6     'django.contrib.contenttypes',
 7     'django.contrib.sessions',
 8     'django.contrib.messages',
 9     'django.contrib.staticfiles',
10     'app01.apps.App01Config', #'app01'也行 
11 ]

这里不使用mysql数据库,使用sqllite,所以也不需要修改配置文档。

接下来就可以生成迁移文档:

打开后执行下面两条命令:

打开生成的db.sqlite3文档。可以看到表已经生成了。

 

 

关键词:models name verbose 'django contrib max self 出版社 length 作者

相关推荐:

011-Djang的cookie和session

010---Django的模型层(2)

编写你的第一个Django应用进程,第二部分

Python微信公众号开发

编写你的第一个Django应用进程,第一部分

模块

module-07-2 简单BBS

获取TypeError:__init __()缺少1个需要的位置参数:'on_delete'当试图添加父表后面的子表

django 武sir model详解