haha
This commit is contained in:
25
server/migrations/0005_filterconfig_min_max_amount.py
Normal file
25
server/migrations/0005_filterconfig_min_max_amount.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
筛选配置表增加最小金额、最大金额字段,与前端请求/响应字段名统一
|
||||
"""
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('server', '0004_add_followup_config'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='filterconfig',
|
||||
name='min_amount',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='最小金额'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='filterconfig',
|
||||
name='max_amount',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='最大金额'),
|
||||
),
|
||||
]
|
||||
@@ -120,6 +120,8 @@ class FilterConfig(models.Model):
|
||||
collection_min = models.IntegerField(default=10, verbose_name="收藏最少个数/天")
|
||||
collection_max = models.IntegerField(default=50, verbose_name="收藏最多个数/天")
|
||||
message_interval = models.IntegerField(default=30, verbose_name="打招呼间隔秒")
|
||||
min_amount = models.IntegerField(null=True, blank=True, verbose_name="最小金额")
|
||||
max_amount = models.IntegerField(null=True, blank=True, verbose_name="最大金额")
|
||||
is_active = models.BooleanField(default=True, verbose_name="是否启用")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
@@ -91,12 +91,30 @@ class LoginSerializer(serializers.Serializer):
|
||||
|
||||
# ────────────────────────── 筛选配置 ──────────────────────────
|
||||
|
||||
# 请求中可能出现的“金额”字段别名,统一映射为 min_amount / max_amount,保证请求与响应字段名一致
|
||||
FILTER_AMOUNT_ALIASES = {
|
||||
"minAmount": "min_amount",
|
||||
"maxAmount": "max_amount",
|
||||
"最小金额": "min_amount",
|
||||
"最大金额": "max_amount",
|
||||
}
|
||||
|
||||
|
||||
class FilterConfigSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = FilterConfig
|
||||
fields = "__all__"
|
||||
read_only_fields = ["id", "created_at", "updated_at"]
|
||||
|
||||
def to_internal_value(self, data):
|
||||
"""请求中兼容 minAmount/maxAmount、最小金额/最大金额 等别名,统一为 min_amount/max_amount。"""
|
||||
if isinstance(data, dict):
|
||||
data = dict(data)
|
||||
for alias, canonical in FILTER_AMOUNT_ALIASES.items():
|
||||
if alias in data and canonical not in data:
|
||||
data[canonical] = data.pop(alias)
|
||||
return super().to_internal_value(data)
|
||||
|
||||
|
||||
# ────────────────────────── 话术 ──────────────────────────
|
||||
|
||||
|
||||
Reference in New Issue
Block a user