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.
88 lines
3.4 KiB
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 |