项目源码下载: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'