3.编写博客的相关model

栏目: Python · 发布时间: 5年前

内容简介:编写博客的相关model。models.py将会在mysite/migrations中生成数据库变动的记录。

编写博客的相关model。

models.py

文章分类

class ArticleCategory(models.Model):
    '''文章分类'''
    name = models.CharField('分类名称', max_length=20)
    created_date = models.DateTimeField('创建时间', auto_now_add=True)

    class Meta:
        verbose_name = '文章分类'
        # 展示在后台中的名称
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

文章标签

class ArticleTag(models.Model):
    '''文章标签'''
    name = models.CharField('标签名称', max_length=20)
    slug = models.SlugField(default='no-slug', max_length=60, blank=True)
    created_date = models.DateTimeField('创建时间', auto_now_add=True)

    class Meta:
        verbose_name = '标签'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('blog:tag_detail', kwargs={'tag_name': self.slug})

文章

class Article(models.Model):
    '''文章'''
    STATUS_CHOICES = (
        (0, '草稿'),
        (1, '发表'),
    )

    title = models.CharField('文章标题', max_length=50, null=False)
    content = models.TextField('文章内容', null=False)

    pub_date = models.DateTimeField('发布时间', auto_now_add=True)
    last_mod_date = models.DateTimeField('最后修改时间', auto_now_add=True)

    author = models.ForeignKey(User, verbose_name='作者', on_delete=models.CASCADE)
    status = models.IntegerField('文章状态', choices=STATUS_CHOICES, default=0)
    category = models.ForeignKey( ArticleCategory, verbose_name='分类', on_delete=models.CASCADE, blank=False, null=False)

    views = models.IntegerField('浏览量', default=0)

    tags = models.ManyToManyField(ArticleTag, verbose_name='标签', blank=True)

    # 元数据,
    class Meta:
        # 文章 排序 规则
        ordering = ['-pub_date']
        verbose_name = "文章"
        verbose_name_plural = verbose_name
        get_latest_by = 'id'

注册到Admin后台

from django.contrib import admin

from mysite.models import (User, ArticleTag,
                           ArticleCategory, Article)


# @admin.register(User)
class UserAdmin(admin.ModelAdmin):
    '''
    装饰器 和 函数注册是一样的效果
    '''
    # 设置在后台中展示的字段
    list_display = ('username', 'phone', 'email', 'nickname', 'date_joined')


admin.site.register(User, UserAdmin)

# 以下是新增

# 文章
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    # 展示的字段
    list_display = ('title', 'pub_date', 'author', 'views')
    # 添加文章的时候,选择标签 横排显示
    filter_horizontal = ('tags',)


@admin.register(ArticleTag)
class ArticleTagAdmin(admin.ModelAdmin):
    list_display = ('name', 'created_date')
    # 不显示在后台
    exclude = ('slug',)


@admin.register(ArticleCategory)
class ArticleCategoryAdmin(admin.ModelAdmin):

    list_display = ('name', 'created_date')

同步数据库

$ python3 manage.py makemigrations
$ python3 manage.py migrate

将会在mysite/migrations中生成数据库变动的记录。

启动服务器,浏览器中输入 http://127.0.0.1/admin ,使用前面创建的超级用户登录进去。

3.编写博客的相关model

在后台中可以管理 文章 文章分类 标签 用户 等。

首先我们在 文章分类 标签 中添加 Python 类型。

3.编写博客的相关model

点击文章-新增,添加有一篇新博客。

3.编写博客的相关model

3.编写博客的相关model


以上所述就是小编给大家介绍的《3.编写博客的相关model》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法数论

算法数论

裴定一、祝跃飞 / 科学出版社 / 2002年09月 / 19.00

本书论述了算法数论的基本内容,其中包括:连分数、代数数域、椭圆曲线、素性检验、大整数因子分解算法、椭圆曲线上的离散对数、超椭圆曲线。本书的特点是内容涉及面广,在有限的篇幅内,包含了必要的预备知识和数学证明,尽可能形成一个完整的体系。并且本书的部分内容曾多次在中国科学院研究生院信息安全国家重点实验室和广州大学作为硕士研究生教材使用。 本书可作为信息安全、数论等专业的研究生教材及相关专业的研究人......一起来看看 《算法数论》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具