学校订餐菜单生成器:Django+DRF 后端与 React 前端,支持 A/B 双套营养周菜单生成、部分自选、拼音搜索、营养校准、Excel 导出

This commit is contained in:
root
2026-08-06 14:09:27 +08:00
commit 75f214dc40
48 changed files with 4684 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# Generated by Django 6.0.8 on 2026-08-05 05:06
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Dish',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True, verbose_name='菜名')),
('dish_type', models.CharField(choices=[('meat', '荤菜'), ('veg', '素菜'), ('soup', '汤'), ('staple', '主食')], max_length=10, verbose_name='类型')),
('description', models.CharField(blank=True, max_length=200, verbose_name='备注')),
('is_active', models.BooleanField(default=True, verbose_name='启用')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
],
options={
'verbose_name': '菜品',
'verbose_name_plural': '菜品',
'ordering': ['dish_type', 'id'],
},
),
]
@@ -0,0 +1,18 @@
# Generated by Django 6.0.8 on 2026-08-05 05:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('meals', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='dish',
name='ingredient_detail',
field=models.CharField(blank=True, help_text='例如:牛心菜85g五花肉片15g', max_length=200, verbose_name='配料明细'),
),
]
@@ -0,0 +1,28 @@
# Generated by Django 6.0.8 on 2026-08-05 05:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('meals', '0002_dish_ingredient_detail'),
]
operations = [
migrations.AddField(
model_name='dish',
name='calorie',
field=models.IntegerField(default=0, verbose_name='热量(kcal)'),
),
migrations.AddField(
model_name='dish',
name='fat',
field=models.DecimalField(decimal_places=1, default=0, max_digits=6, verbose_name='脂肪(g)'),
),
migrations.AddField(
model_name='dish',
name='protein',
field=models.DecimalField(decimal_places=1, default=0, max_digits=6, verbose_name='蛋白质(g)'),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 6.0.8 on 2026-08-05 13:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('meals', '0003_dish_calorie_dish_fat_dish_protein'),
]
operations = [
migrations.AddField(
model_name='dish',
name='cuisine',
field=models.CharField(blank=True, choices=[('家常菜', '家常菜'), ('本帮菜', '本帮菜'), ('江浙菜', '江浙菜'), ('川菜', '川菜'), ('粤菜', '粤菜'), ('鲁菜', '鲁菜'), ('湘菜', '湘菜'), ('西北菜', '西北菜'), ('面点小吃', '面点小吃')], default='家常菜', max_length=20, verbose_name='菜系'),
),
]