You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
djiango/blog/models.py

88 lines
3.4 KiB

from django.db import models
from django.contrib.auth.models import User
class FlowerCategory(models.Model):
"""花卉分类模型"""
CATEGORY_TYPES = [
('indoor', '室内植物'),
('outdoor', '室外植物'),
('succulent', '多肉植物'),
('flowering', '观花植物'),
('foliage', '观叶植物'),
('herb', '草本植物'),
]
name = models.CharField(max_length=100, verbose_name="分类名称")
category_type = models.CharField(max_length=20, choices=CATEGORY_TYPES, verbose_name="分类类型")
description = models.TextField(blank=True, verbose_name="分类描述")
icon = models.CharField(max_length=50, default='🌿', verbose_name="分类图标")
sort_order = models.IntegerField(default=0, verbose_name="排序")
class Meta:
verbose_name = "花卉分类"
verbose_name_plural = verbose_name
ordering = ['sort_order', 'name']
def __str__(self):
return self.name
class Carousel(models.Model):
"""轮播图模型"""
title = models.CharField(max_length=200, verbose_name="标题")
subtitle = models.CharField(max_length=200, blank=True, verbose_name="副标题")
image = models.ImageField(upload_to='carousel/', verbose_name="轮播图片")
link = models.CharField(max_length=200, blank=True, verbose_name="链接")
is_active = models.BooleanField(default=True, verbose_name="是否激活")
sort_order = models.IntegerField(default=0, verbose_name="排序")
class Meta:
verbose_name = "轮播图"
verbose_name_plural = verbose_name
ordering = ['sort_order']
def __str__(self):
return self.title
class Flower(models.Model):
"""花卉信息"""
DIFFICULTY_LEVEL = [
('easy', '简单'),
('medium', '中等'),
('hard', '困难'),
]
name = models.CharField(max_length=200, verbose_name="花卉名称")
scientific_name = models.CharField(max_length=200, verbose_name="学名", blank=True)
category = models.ForeignKey(FlowerCategory, on_delete=models.CASCADE, verbose_name="分类")
description = models.TextField(verbose_name="花卉描述")
cultivation_techniques = models.TextField(verbose_name="养殖技巧")
watering_frequency = models.CharField(max_length=100, verbose_name="浇水频率")
sunlight_requirements = models.CharField(max_length=100, verbose_name="光照需求")
temperature_range = models.CharField(max_length=100, verbose_name="适宜温度")
difficulty = models.CharField(max_length=10, choices=DIFFICULTY_LEVEL, verbose_name="养殖难度")
image = models.ImageField(upload_to='flowers/', verbose_name="花卉图片", blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = "花卉信息"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class CultivationTip(models.Model):
"""养殖技巧"""
flower = models.ForeignKey(Flower, on_delete=models.CASCADE, related_name='tips')
title = models.CharField(max_length=200, verbose_name="技巧标题")
content = models.TextField(verbose_name="技巧内容")
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = "养殖技巧"
verbose_name_plural = verbose_name