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可以看到数据库中已经建立了数据表,并且可以手工增加数据进表中:

Django学习案例一(blog):三. 模型生成数据的更多相关文章
- Django学习系列之重写User模型和登录验证
重写User模型 Django内置的User模型可能不适合某些项目,我们可能要基于内置的添加一些字段 创建users app startapp users 修改settings.py配置文件,覆盖默认 ...
- Django 学习笔记(四) --- 模型和数据库
人生苦短 ~ Tips:仅适用于 Python 3+(反正差别不大,py2 改改也能用).因为据 Python 之父 Guido van Rossum 说会在 2020 年停止对 Python 2 的 ...
- Django学习案例一(blog):六. 开发博客内容页面
目标:某条博客具体内容的展示,可返回博客主页面,可进行评论. 1. 编辑路由 一篇博客,要将其找出来,就需要有一个唯一的标识.Django 的模型中默认有一个唯一的且未自增长的主键,即 id 字段.我 ...
- Django学习案例一(blog):五. 开发主页(博客列表展示)
主页是一个“博客列表”页.博客要按发布时间的倒序来排列,每个博客都要包含标题.作者.分类.发布时间的显示(年-月-日 时:分)及节选的正文内容(前 100 个字).点击单独的博客可以进入其详情页. 1 ...
- Django学习案例一(blog):四. 使用Admin
1. 创建超级用户 python manage.py createsuperuser 创建过程中输入用户名,并设定密码(记住). 后台管理汉化.修改settings.py中LANGUAGE_CODE ...
- Django学习案例一(blog):一. 创建project、app
1.创建project 方法1:使用命令行创建项目.在E盘cmd执行如下命令: django-admin.py startproject myblog 方法2:使用pycharm创建项目.放置位置为D ...
- Django学习案例一(blog):二. 连接数据库
本例使用了django默认的sqlite3数据库,配置文件不需要作调整: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite ...
- Django学习笔记(2)——模型,后台管理和视图的学习
一:Web投票示例 本节我们首先从全局范围再复习一下Django的概念,让自己对Django的设计理念, 功能模块,体系架构,基本用法有初步的印象. Django初始的详细博客内容:请点击我 该应用包 ...
- django学习之Model(三)QuerySet
接下来主要学习Models中的Making queries 写好models.py后,django会自动提供一个数据库的抽象API,来实现CRUD(create, retrieve, update, ...
随机推荐
- LINQ简记(2):重要概念
为了能让初学者更快速地掌握,在系列文章中,我尽可能地避开理论讲解,一则对于入门者来说,过多的理论叙述反而会降低大家学习编程的兴趣,二则,官方文档的资料很详细,我说了也是废话.因此,我会尽可能地多举些简 ...
- JavaScript初步学习----基本使用,简单事件,修改样式,数据类型
JavaScript基本使用 JavaScript原名叫livescript,是一门动态类型,弱类型基于原型的脚本语言 用于页面特效,前后交替,后台开发(node) JavaScript写在s ...
- ReportNG 替换testng过程中遇到的问题
1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collectio ...
- Android第三方文件选择器:aFileChooser
Android第三方文件选择器:aFileChooser aFileChooser是Android平台上的一个第三方文件选择器,其在github上的项目主页是:https://github.co ...
- 233 Matrix 矩阵快速幂
In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...
- [bzoj2213][Poi2011]Difference_动态规划
Difference bzoj-2213 Poi-2011 题目大意:已知一个长度为n的由小写字母组成的字符串,求其中连续的一段,满足该段中出现最多的字母出现的个数减去该段中出现最少的字母出现的个数最 ...
- N天学习一个linux命令之ssh-keygen
用途 生成ssh加密算法需要使用到的秘钥以及管理和转换 用法 ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [- ...
- 【实时文件同步】rsync+inotify-tools的安装与配置
http://blog.csdn.net/yakson/article/details/52044403
- PHP array_intersect_uassoc()
定义和用法 array_intersect_uassoc() 函数使用用户自定义的回调函数计算数组的交集,用回调函数比较索引. array_intersect_uassoc() 返回一个数组,该数组包 ...
- hibernate4中oracle,sqlserver,mysql数据库的sql方言配置(SQL Dialects)
hibernate4中oracle,mysql,sqlserver数据库的sql方言配置(SQL Dialects) 数据库类型 Hibernate sql方言 DB2 org.hibernate.d ...