|
|
# -*- coding: utf-8 -*-
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
from django.db import models
|
|
|
from ckeditor_uploader.fields import RichTextUploadingField
|
|
|
|
|
|
# Create your models here.
|
|
|
class Category(models.Model): #类别
|
|
|
cname = models.CharField(max_length=30,unique=True,verbose_name='类别名称')
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 't_category'
|
|
|
verbose_name_plural='类别'
|
|
|
|
|
|
def __str__(self):
|
|
|
# 首先,检查self.cname是否为None或非字符串类型
|
|
|
if not isinstance(self.cname, str):
|
|
|
# 这里,您可以选择抛出一个具体的异常,或者返回一个默认值
|
|
|
# 例如,返回一个空字符串或者一个错误提示
|
|
|
raise ValueError("cname must be a string")
|
|
|
|
|
|
# 使用f-string进行字符串格式化
|
|
|
return f'Category: {self.cname}'
|
|
|
|
|
|
class Tag(models.Model): #标签
|
|
|
tname = models.CharField(max_length=30,unique=True,verbose_name='标签名称')
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 't_tag'
|
|
|
verbose_name_plural = '标签'
|
|
|
|
|
|
def __str__(self):
|
|
|
# 首先,检查self.cname是否为None或非字符串类型
|
|
|
if not isinstance(self.tname, str):
|
|
|
# 这里,您可以选择抛出一个具体的异常,或者返回一个默认值
|
|
|
# 例如,返回一个空字符串或者一个错误提示
|
|
|
raise ValueError("cname must be a string")
|
|
|
|
|
|
# 使用f-string进行字符串格式化
|
|
|
return f'Tag: {self.tname}'
|
|
|
|
|
|
class Post(models.Model):
|
|
|
title = models.CharField(max_length=100,unique=True) #标题
|
|
|
desc = models.CharField(max_length=100) #简述
|
|
|
content = RichTextUploadingField(null=True,blank=True)
|
|
|
created = models.DateTimeField(auto_now_add=True) #发帖时间
|
|
|
category = models.ForeignKey(Category,on_delete=models.CASCADE) #类别
|
|
|
tag = models.ManyToManyField(Tag) #标签
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 't_post'
|
|
|
verbose_name_plural = '帖子'
|
|
|
|
|
|
def __str__(self):
|
|
|
# 首先,检查self.cname是否为None或非字符串类型
|
|
|
if not isinstance(self.title, str):
|
|
|
# 这里,您可以选择抛出一个具体的异常,或者返回一个默认值
|
|
|
# 例如,返回一个空字符串或者一个错误提示
|
|
|
raise ValueError("cname must be a string")
|
|
|
|
|
|
# 使用f-string进行字符串格式化
|
|
|
return f'Post:{self.title}'
|
|
|
|
|
|
|
|
|
|