mat/backend/apps/material/models.py

79 lines
3.9 KiB
Python

from django.db import models
class Material(models.Model):
"""
材料模型
"""
MAJOR_CATEGORY_CHOICES = (
('architecture', '建筑'),
('landscape', '景观'),
('equipment', '设备'),
('decoration', '装修'),
)
REPLACE_TYPE_CHOICES = (
('alternative', '平替'),
('new_development', '新研发'),
)
ADVANTAGE_CHOICES = (
('quality', '品质'),
('cost', '成本'),
)
APPLICATION_SCENE_CHOICES = (
('fu', '府系'),
('jing', '境系'),
('cheng', '城系'),
('zhu', '住系'),
('affordable', '保障房'),
)
STAR_LEVEL_CHOICES = (
(1, '1星'),
(2, '2星'),
(3, '3星'),
)
STATUS_CHOICES = (
('draft', '创建中'),
('pending', '待审核'),
('approved', '已审核'),
)
name = models.CharField(max_length=255, verbose_name='材料名称')
major_category = models.CharField(max_length=20, choices=MAJOR_CATEGORY_CHOICES, verbose_name='专业类别')
material_category = models.CharField(max_length=255, verbose_name='材料分类')
material_subcategory = models.CharField(max_length=255, verbose_name='材料子分类')
spec = models.CharField(max_length=255, blank=True, null=True, verbose_name='规格型号')
standard = models.CharField(max_length=255, blank=True, null=True, verbose_name='符合标准')
application_scene = models.CharField(max_length=20, choices=APPLICATION_SCENE_CHOICES, blank=True, null=True, verbose_name='应用场景')
application_desc = models.TextField(blank=True, null=True, verbose_name='应用场景说明')
replace_type = models.CharField(max_length=20, choices=REPLACE_TYPE_CHOICES, blank=True, null=True, verbose_name='替代材料类型')
advantage = models.CharField(max_length=20, choices=ADVANTAGE_CHOICES, blank=True, null=True, verbose_name='竞争优势')
advantage_desc = models.TextField(blank=True, null=True, verbose_name='优势说明')
cost_compare = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, verbose_name='成本对比百分数')
cost_desc = models.TextField(blank=True, null=True, verbose_name='成本说明')
cases = models.TextField(blank=True, null=True, verbose_name='案例')
brochure = models.ImageField(upload_to='material_brochures/', blank=True, null=True, verbose_name='宣传页图片')
quality_level = models.IntegerField(choices=STAR_LEVEL_CHOICES, blank=True, null=True, verbose_name='质量提升等级')
durability_level = models.IntegerField(choices=STAR_LEVEL_CHOICES, blank=True, null=True, verbose_name='耐久可靠等级')
eco_level = models.IntegerField(choices=STAR_LEVEL_CHOICES, blank=True, null=True, verbose_name='环保健康等级')
carbon_level = models.IntegerField(choices=STAR_LEVEL_CHOICES, blank=True, null=True, verbose_name='循环低碳等级')
score_level = models.IntegerField(choices=STAR_LEVEL_CHOICES, blank=True, null=True, verbose_name='总评分等级')
connection_method = models.CharField(max_length=255, blank=True, null=True, verbose_name='连接方式')
construction_method = models.CharField(max_length=255, blank=True, null=True, verbose_name='施工工艺')
limit_condition = models.TextField(blank=True, null=True, verbose_name='限制条件')
factory = models.ForeignKey('factory.Factory', on_delete=models.CASCADE, related_name='materials', verbose_name='所属工厂')
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft', 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 = '材料'
db_table = 'material'
def __str__(self):
return self.name