diff --git a/server/api/tasks.py b/server/api/tasks.py index a12d2cb..84e6450 100644 --- a/server/api/tasks.py +++ b/server/api/tasks.py @@ -65,7 +65,13 @@ def task_list(request): ser.is_valid(raise_exception=True) validated = ser.validated_data.copy() - account_id = validated.pop("id", None) + account_id = validated.pop("id", None) or validated.pop("account_id", None) + # form-data 可能把数字传成字符串 + if account_id is not None: + try: + account_id = int(account_id) + except (TypeError, ValueError): + account_id = None req = TaskCreate(**validated) target_worker_id = req.worker_id or "" account_name = req.account_name or "" diff --git a/server/serializers.py b/server/serializers.py index 1f0c4dd..4dd4370 100644 --- a/server/serializers.py +++ b/server/serializers.py @@ -37,7 +37,8 @@ class AccountBindSerializer(serializers.Serializer): class TaskCreateSerializer(serializers.Serializer): """提交任务请求。""" task_type = serializers.CharField(max_length=64) - id = serializers.IntegerField(required=False, allow_null=True, default=None) # 账号 ID,直接指定 + id = serializers.IntegerField(required=False, allow_null=True, default=None) # 账号 ID + account_id = serializers.IntegerField(required=False, allow_null=True, default=None) # 同上,别名 worker_id = serializers.CharField(max_length=64, required=False, allow_blank=True, default="") account_name = serializers.CharField(max_length=128, required=False, allow_blank=True, default="") params = serializers.JSONField(required=False, default=dict)