首页 > 代码库 > 使用django开发博客过程记录1——数据库设计
使用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.title28 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.name39 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, Tag10 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 = cat28 29 for tag in tags:30 a.tags.add(tag)31 a.save()32 return a33 34 def add_cat(name):35 c = Category.objects.get_or_create(name=name, create_time=datetime.datetime.utcnow())[0]36 return c37 38 def add_tag(name):39 t = Tag.objects.get_or_create(name=name, create_time=datetime.datetime.utcnow())[0]40 return t41 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——数据库设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。