Django前后端分离开发-新闻管理系统(二)

本文档详细介绍了使用Django进行前后端分离开发新闻管理系统的步骤,包括Models数据结构的设计,DjangoUeditor富文本编辑器的安装配置,数据库迁移,后台admin.py的设置以及序列化器serializers的创建。通过此教程,读者可以学习到如何在Django项目中实现新闻管理功能。
摘要由CSDN通过智能技术生成
项目源码下载:https://github.com/Cherish-sun/NEWS/tree/master
一、Models数据结构

数据表结构

二、创建模型 models.py
# Create your models here.
from django.db import models
import datetime
from django.contrib.auth.models import User
from DjangoUeditor.models import UEditorField
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token


class Category(models.Model):
    title = models.CharField(max_length=20, verbose_name='名称', help_text="大类")

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['title']
        verbose_name = '新闻类别'
        verbose_name_plural = verbose_name


class Item(models.Model):
  title = models.CharField(max_length=20, verbose_name='名称', help_text="名称")
  created_date = models.DateTimeField(default=datetime.datetime.now, verbose_name='创建时间', help_text="创建时间")
  completed = models.BooleanField(default=False, verbose_name='是否完成', help_text="是否完成")
  categorys = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='items', help_text="大类")

  def __str__(self):
      return self.title

  class Meta:
      ordering = ['title']
      verbose_name = '新闻子栏目'
      verbose_name_plural = verbose_name


class Tag(models.Model):
    name = models.CharField(max_length=50, verbose_name=u'名称', help_text="名称")
    slug = models.SlugField(max_length=50, verbose_name=u'描述')

    def __str__(self):
        return self.name

    class Meta:
        ordering = ['id']
        verbose_name = '标签'
        verbose_name_plural = verbose_name


class Article(models.Model):
    title = models.CharField(max_length=100, verbose_name='标题', help_text="名称")
    slug = models.SlugField(unique_for_year='publish_date', verbose_name='描述')
    # author = models.CharField(max_length=100, verbose_name='作者', help_text="作者")
    author = models.ForeignKey(User, related_name='author', on_delete=models.CASCADE, verbose_name='作者', help_text="作者")
    # content = models.TextField(verbose_name='内容')
    content = UEditorField(u'内容', height=400, width=600, default='', imagePath="upload/",
                       toolbars='mini', filePath='upload/', blank=True)
    status = models.CharField(max_length=2, verbose_name='状态', help_text="状态")
    tags = models.ManyToManyField(Tag, related_name='tags', blank=True, help_text="标签")
    publish_date = models.DateTimeField(default=datetime.datetime.now(), verbose_name='发布日期', help_text="发布日期")
    expiration_date = models.DateTimeField(blank=True, null=True, verbose_name='有效日期', help_text="有效日期")
    is_active = models.BooleanField(default=True, blank=True, verbose_name='是否热门', help_text="是否热门")
    item = models.ForeignKey(Item, related_name='item'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值