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_min = models.IntegerField(default=10, verbose_name="收藏最少个数/天")
|
||||||
collection_max = models.IntegerField(default=50, verbose_name="收藏最多个数/天")
|
collection_max = models.IntegerField(default=50, verbose_name="收藏最多个数/天")
|
||||||
message_interval = models.IntegerField(default=30, 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="是否启用")
|
is_active = models.BooleanField(default=True, verbose_name="是否启用")
|
||||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||||
updated_at = models.DateTimeField(auto_now=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 FilterConfigSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FilterConfig
|
model = FilterConfig
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
read_only_fields = ["id", "created_at", "updated_at"]
|
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