Django学习案例一(blog):三. 模型生成数据

模型概述:

简单的博客表构造:1. Category分类(分类名称)2. Tag标签(标签名称)3. Blog博客(标题、作者、正文、发布时间、分类、标签)4.评论(博客、称呼、邮箱、内容、发布时间)。

表间关系:

(1)一个博客只属于一个分类,而一个分类可以有多个博客,关系一对多。博客的分类设置为ForeignKey。同理,博客和评论也是一对多关系。

(2)一个博客可以有多个标签,而一个标签可以有多个博客,关系多对多。博客的标签设置为ManyToManyField。

1. 定义模型:

D:\chuangke\myblog\blog\models.py


from django.db import models
"""分类"""
class Category(models.Model):
    name = models.CharField('名称', max_length=16)
    def __str__(self):
        return self.name

"""标签"""
class Tag(models.Model):
    name = models.CharField('名称', max_length=16)
    def __str__(self):
        return self.name

"""博客"""
class Blog(models.Model):
    title = models.CharField('标题', max_length=32)
    author = models.CharField('作者', max_length=16)
    content = models.TextField('正文')
    created = models.DateTimeField('发布时间', auto_now_add=True)
    category = models.ForeignKey(Category,verbose_name='分类',on_delete = models.CASCADE)
    tags = models.ManyToManyField(Tag, verbose_name='标签')
    def __str__(self):
        return self.title

"""评论"""
class Comment(models.Model):
    blog = models.ForeignKey(Blog, verbose_name='博客',on_delete = models.CASCADE)
    name = models.CharField('称呼', max_length=16)
    email = models.EmailField('邮箱')
    content = models.CharField('内容', max_length=140)
    created = models.DateTimeField('发布时间', auto_now_add=True)
 

2. 同步数据库数据

在完成模型定义后,我需要将其真正同步到实际的数据库中去。操作需要分成两步:

Python manage.py makemigrations blog

#app名blog是可选的,如果不写则对项目中所有app进行数据迁移。

Python manage.py migrate

数据库就生成在项目根目录下,名为db.sqlite3,用sqlite expert personal可以看到数据库中已经建立了数据表,并且可以手工增加数据进表中:

 

 

 

posted @ 2017-11-05 11:49  summyfly  阅读(290)  评论(0编辑  收藏  举报