一个家庭日报系统
This commit is contained in:
131
core/models.py
Normal file
131
core/models.py
Normal file
@@ -0,0 +1,131 @@
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
# 阅读记录类型
|
||||
READING_TYPE_CHOICES = [
|
||||
('book', '书籍'),
|
||||
('article', '文章'),
|
||||
('video', '视频'),
|
||||
]
|
||||
|
||||
# 家庭事项类型
|
||||
FAMILY_TASK_TYPE_CHOICES = [
|
||||
('purchase', '采购'),
|
||||
('housework', '家务'),
|
||||
]
|
||||
|
||||
# 优先级
|
||||
PRIORITY_CHOICES = [
|
||||
('low', '低'),
|
||||
('medium', '中'),
|
||||
('high', '高'),
|
||||
]
|
||||
|
||||
# 状态
|
||||
STATUS_CHOICES = [
|
||||
('pending', '待处理'),
|
||||
('completed', '已完成'),
|
||||
]
|
||||
|
||||
# 今日计划类型
|
||||
PLAN_TYPE_CHOICES = [
|
||||
('reading', '阅读'),
|
||||
('insight', '感悟'),
|
||||
('family', '家庭事项'),
|
||||
('other', '其他'),
|
||||
]
|
||||
|
||||
class ReadingRecord(models.Model):
|
||||
"""阅读记录表"""
|
||||
date = models.DateField(default=timezone.now, verbose_name="日期")
|
||||
type = models.CharField(max_length=20, choices=READING_TYPE_CHOICES, verbose_name="类型")
|
||||
title = models.CharField(max_length=200, verbose_name="标题")
|
||||
source = models.CharField(max_length=200, blank=True, null=True, verbose_name="来源")
|
||||
progress = models.CharField(max_length=100, blank=True, null=True, verbose_name="进度")
|
||||
file = models.FileField(upload_to='reading_files/', blank=True, null=True, verbose_name="上传文件")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "阅读记录"
|
||||
verbose_name_plural = "阅读记录"
|
||||
ordering = ['-date', '-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.title} ({self.get_type_display()})"
|
||||
|
||||
class InsightRecord(models.Model):
|
||||
"""感悟记录表"""
|
||||
date = models.DateField(default=timezone.now, verbose_name="日期")
|
||||
content = models.TextField(verbose_name="内容")
|
||||
file = models.FileField(upload_to='insight_files/', blank=True, null=True, verbose_name="上传文件")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "感悟记录"
|
||||
verbose_name_plural = "感悟记录"
|
||||
ordering = ['-date', '-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return f"感悟记录 - {self.date}"
|
||||
|
||||
class FamilyTask(models.Model):
|
||||
"""家庭事项表"""
|
||||
type = models.CharField(max_length=20, choices=FAMILY_TASK_TYPE_CHOICES, verbose_name="类型")
|
||||
content = models.TextField(verbose_name="内容")
|
||||
priority = models.CharField(max_length=10, choices=PRIORITY_CHOICES, default='medium', verbose_name="优先级")
|
||||
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending', verbose_name="状态")
|
||||
deadline = models.DateField(blank=True, null=True, verbose_name="截止日期")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "家庭事项"
|
||||
verbose_name_plural = "家庭事项"
|
||||
ordering = ['-priority', '-deadline', '-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.get_type_display()} - {self.content[:20]}..."
|
||||
|
||||
class TodayPlan(models.Model):
|
||||
"""今日计划表"""
|
||||
date = models.DateField(default=timezone.now, verbose_name="日期")
|
||||
content = models.TextField(verbose_name="内容")
|
||||
priority = models.CharField(max_length=10, choices=PRIORITY_CHOICES, default='medium', verbose_name="优先级")
|
||||
type = models.CharField(max_length=20, choices=PLAN_TYPE_CHOICES, default='other', verbose_name="类型")
|
||||
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending', verbose_name="状态")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "今日计划"
|
||||
verbose_name_plural = "今日计划"
|
||||
ordering = ['-priority', '-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.date} - {self.content[:20]}..."
|
||||
|
||||
class SystemConfig(models.Model):
|
||||
"""系统配置表"""
|
||||
smtp_server = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP服务器")
|
||||
smtp_port = models.IntegerField(default=587, verbose_name="SMTP端口")
|
||||
smtp_username = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP用户名")
|
||||
smtp_password = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP密码")
|
||||
send_time = models.TimeField(default='08:00', verbose_name="每日发送时间")
|
||||
recipient_email = models.EmailField(blank=True, null=True, verbose_name="收件人邮箱")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "系统配置"
|
||||
verbose_name_plural = "系统配置"
|
||||
|
||||
def __str__(self):
|
||||
return "系统配置"
|
||||
|
||||
@classmethod
|
||||
def get_config(cls):
|
||||
"""获取系统配置,单例模式"""
|
||||
config, created = cls.objects.get_or_create(pk=1)
|
||||
return config
|
||||
Reference in New Issue
Block a user