前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-信息资讯-资讯模型

Django实战-信息资讯-资讯模型

作者头像
小团子
发布2019-07-18 16:18:59
4960
发布2019-07-18 16:18:59
举报
文章被收录于专栏:数据云团数据云团数据云团

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

Django 非常适合敏捷开发,开发效率非常之高。Model 作为 Django 重要组成部分也是亮点之一,着实需要花时间好好梳理一遍。ORM 需要好好学习一下,运用得当可以大大的提升代码的简洁性。Django 的 model 模块,使得代码更加容易维护,只需修改一次,肯定会大大提高程序的健壮性以及可维护性,而且ORM也使得该框架更加灵活且松解耦。

本次的资讯模型比较简单,如果需要增加其它字段,可以自行修改,为达到前端数据交互效果,在分类上可以采用多级分类联合。

① 分类

class NewsCategory(models.Model):
    name = models.CharField(max_length=100, verbose_name="类别名", help_text="类别名")

② 内容

class News(models.Model):
    title = models.CharField(max_length=200, verbose_name="标题", help_text="标题")
    desc = models.CharField(max_length=200, verbose_name="简述", help_text="简述")
    thumbnail = models.URLField(verbose_name="封面图链接", help_text="封面图链接")
    content = models.TextField(verbose_name="文本内容", help_text="文本内容")
    # 资讯发布时间
    pub_time = models.DateTimeField(auto_now_add=True)

    category = models.ForeignKey('NewsCategory', on_delete=models.SET_NULL, null=True) # 这篇新闻引用后被删除了 处理category 为空
    author = models.ForeignKey('xfzauth.User', on_delete=models.SET_NULL, null=True)
    class Meta:
        # 以后News.objects提取数据的时候,就会自动的按照列表中指定的字段排序
        # 如果不加负号,那么默认就是按照从小到大正序排序
        # 如果加上一个负号,就会按照从大到小倒序排序
        ordering = ['-pub_time']

③ 评论

class Conment(models.Model):
    content = models.TextField(verbose_name="评论内容", help_text="评论内容")
    pub_time = models.DateTimeField(auto_now_add=True)
    news = models.ForeignKey("News", on_delete=models.CASCADE, related_name='comments')
    # 评论删除 人也删除
    author = models.ForeignKey("xfzauth.User", on_delete=models.CASCADE)
    class Meta:
        ordering = ['-pub_time']

④ 轮播图

class Banner(models.Model):
    image_url = models.URLField(verbose_name="轮播图封面链接", help_text="轮播图封面链接")
    priority = models.IntegerField(default=0)
    link_to = models.URLField(verbose_name="轮播图跳转链接", help_text="轮播图跳转链接")
    pub_time = models.DateTimeField(auto_now_add=True)
    class Meta:
        # 优先级越高就在越前面
        ordering = ["-priority"]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档