使用django开发博客过程记录1——数据库设计
Posted 魔术师的礼帽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用django开发博客过程记录1——数据库设计相关的知识,希望对你有一定的参考价值。
1.数据库设计
2.插入测试数据
3.配置相关问题
1.数据库设计
数据库有简单的三张表:Article、Category、Tag以下是代码
1 # -*- coding:utf-8 -*- 2 from __future__ import unicode_literals 3 4 from django.db import models 5 6 7 class Article(models.Model): 8 STATUS_CHOICES = ( 9 (‘d‘, ‘Draft‘), 10 (‘p‘, ‘Published‘), 11 ) 12 13 title = models.CharField(‘标题‘, max_length=64, unique=True) 14 content = models.TextField(‘正文‘) 15 create_time = models.DateTimeField(‘创建时间‘) 16 last_modified_time = models.DateTimeField(‘修改时间‘) 17 status = models.CharField(‘文章状态‘, max_length=1, choices=STATUS_CHOICES) 18 abstract = models.CharField(‘摘要‘, max_length=64, blank=True, null=True, help_text=‘可选,如若为空将摘取正文的前64个字符‘) 19 views = models.PositiveIntegerField(‘浏览次数‘, default=0) 20 likes = models.PositiveIntegerField(‘点赞数‘, default=0) 21 topped = models.BooleanField(‘置顶‘, default=False) 22 23 category = models.ForeignKey(‘Category‘, verbose_name=‘分类‘, null=True, on_delete=models.SET_NULL) 24 tags = models.ManyToManyField(‘Tag‘, verbose_name=‘标签集合‘, blank=True) 25 26 def __unicode__(self): 27 return self.title 28 29 class Meta: 30 ordering = [‘-last_modified_time‘] 31 32 class Category(models.Model): 33 name = models.CharField(‘类名‘, max_length=20) 34 create_time = models.DateTimeField(‘创建时间‘, auto_now_add=True) 35 last_modified_time = models.DateTimeField(‘修改时间‘, auto_now=True) 36 37 def __unicode__(self): 38 return self.name 39 40 class Tag(models.Model): 41 name = models.CharField(‘标签名‘, max_length=20) 42 create_time = models.DateTimeField(‘创建时间‘, auto_now_add=True) 43 last_modified_time = models.DateTimeField(‘修改时间‘, auto_now=True) 44 45 def __unicode__(self): 46 return self.name
2.插入测试数据
此时登录admin后台没有数据,于是想利用编写一个populate.py负责插入测试数据以下是代码:
1 # -*- coding:utf-8 -*- 2 import datetime 3 import os 4 os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘pureblog.settings‘) 5 6 import django 7 django.setup() 8 9 from apps.models import Article, Category, Tag 10 11 def populate(): 12 tags = [] 13 cat_linux = add_cat(‘Linux‘) 14 tag_ubantu = add_tag(‘ubantu‘) 15 tag_redhat = add_tag(‘redhat‘) 16 tags.append(tag_ubantu) 17 tags.append(tag_redhat) 18 add_article(‘标题1‘, ‘p‘, cat_linux, tags) 19 20 def add_article(title, status, cat, tags): 21 a = Article.objects.get_or_create(title=title, 22 create_time=datetime.datetime.utcnow(), 23 last_modified_time=datetime.datetime.utcnow(), 24 status=status)[0] 25 a.content = ‘这是测试数据‘ 26 a.abstract = a.content[:64] 27 a.category = cat 28 29 for tag in tags: 30 a.tags.add(tag) 31 a.save() 32 return a 33 34 def add_cat(name): 35 c = Category.objects.get_or_create(name=name, create_time=datetime.datetime.utcnow())[0] 36 return c 37 38 def add_tag(name): 39 t = Tag.objects.get_or_create(name=name, create_time=datetime.datetime.utcnow())[0] 40 return t 41 42 if __name__ == ‘__main__‘: 43 populate()
3.配置相关问题
1)因为我的数据库使用的是mysql数据库,插入数据时可能会遇到字符编码同问题,以下链接是解决这个问题的链接:
http://stackoverflow.com/questions/6065037/rails-mysql-encoding-issue-question-mysqlerror-illegal-mix-of-collations-l
以上是关于使用django开发博客过程记录1——数据库设计的主要内容,如果未能解决你的问题,请参考以下文章
3000元买的实战Python Django开发博客系统,全套视频教程学习资料