基于Django的博客项目---模型设计

在models.py中设计模型用来保存数据

1.博客分类模型(博客分类即原创,转载等)

class Category(models.Model):

    name = models.CharField(max_length=128, verbose_name='博客分类')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "博客分类"
        verbose_name_plural = '博客分类'

2.同理创建博客标签模型

3.创建博客模型

class Entry(models.Model):

    title = models.CharField(max_length=128, verbose_name='文章标题')

    author = models.ForeignKey(User, verbose_name='博客作者', on_delete=models.CASCADE)
    # ForeignKey,外键;使用Django内置的User对象
    img = models.ImageField(upload_to='blog_images', null=True, blank=True, verbose_name='博客配图')
    # django不会直接将图片保存到数据库中,而是在数据库中保存指向图片文件的路径,图片本身被保存在程序员指定的目录下,如何保存?
    # null = True,表示该字段在数据库中可以为空
    # blank = True,表示该字段在Django后台创建时可以为空
    # 需要安装pillow才可使用
    body = models.TextField(verbose_name='博客正文')
    # TextField可以比CharField装更多东西
    abstract = models.TextField(max_length=256, blank=True, null=True, verbose_name='博客摘要')

    visiting = models.PositiveIntegerField(default=0, verbose_name='博客访问量')
    # PositiveInteger,正整数
    category = models.ManyToManyField('Category', verbose_name='博客分类')
    # ManyToMany,(博客与博客分类)多对多
    tags = models.ManyToManyField('Tag', verbose_name='博客标签')

    created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    modified_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:blog_detail', kwargs={'blog_id': self.id})  # http://127.0.0.1/blog/3

    def increase_visiting(self):
        self.visiting += 1
        self.save(update_fields=['visiting'])

    class Meta:
        ordering = ['-created_time']
        # 用创建时间的反序排序,即最近的博客最先展示
        verbose_name = "博客"
        verbose_name_plural = '博客'


配置admin.py

from django.contrib import admin
from . import models
# Register your models here.

class EntryAdmin(admin.ModelAdmin):

    list_display = ['title', 'author', 'visiting', 'created_time', 'modified_time']


admin.site.register(models.Category)
admin.site.register(models.Tag)
admin.site.register(models.Entry, EntryAdmin)


其他

(1)安装pillow
执行activate命令(可直接在pycharm下方的terminal中输入)激活虚拟环境并安装pillow

pip install pillow

(2)执行命令1

python manage.py makemigrations

为什么要执行这个命令呢?
因为更改了 model.py的内容,执行此命令就相当于在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件。你可以手动打开这个文件,看看里面是什么。
(3)执行命令2

python manage.py migrate

将该改动作用到数据库文件,比如创建数据表,或者增加字段之类的
(4)创建超级用户用来管理后台

python manage.py createsuperuser

(5)启动和管理
访问127.0.0.1:8000/admin,就可以增加或者修改删除博客,博客分类,博客标签了。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值