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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

互联网金融手册

互联网金融手册

谢平、邹传伟、刘海二 / 中国人民大学出版社 / 2014-4-1 / 68.00元

本书作者在2012年4月7日“金融四十人年会”上首次公开提出了“互联网金融”概念。在短短两年中,互联网金融已经成为中国金融界和IT界最热门的词汇之一,相关创业活动也非常活跃。本书是作者两年来深入研究、思考的结晶,畅想了金融与IT结合的未来图景,将理论与实践高度融合,与读者分享了许多深具洞察力的观点。本书力图规范互联网金融的定义,完善互联网金融的理论体系,分析互联网金融目前的六种主要类型——金融互联......一起来看看 《互联网金融手册》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具