You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django CreateView绑定ModelForm后无法提交保存数据如何解决?

问题根因

提交失败的核心原因是test_case_list字段绑定的验证器和实际存储值格式不匹配:

  • validate_comma_separated_integer_list是Django内置验证器,仅允许字段值为逗号分隔的纯整数列表,比如1,2,3这类格式
  • 你实际存入该字段的值是用例名称*执行次数拼接后的逗号分隔字符串,包含字母、特殊符号,不符合验证规则。表单验证失败后Django会直接返回当前表单页,不会执行数据保存逻辑,因此出现页面不跳转、已选列表清空、无新增记录的现象。
    你删除验证器后验证逻辑消失,自然可以正常提交。

逗号分隔字符串验证方案

Django没有内置通用的逗号分隔字符串验证器,你可以根据自己的业务格式自定义验证器,示例如下:

from django.core.exceptions import ValidationError

def validate_comma_separated_case_list(value):
    # 按逗号拆分每个条目
    items = value.split(',')
    for item in items:
        # 校验每个条目是否符合 用例名*次数 的格式
        if '*' not in item:
            raise ValidationError(f"条目[{item}]格式错误,需为 [用例名*执行次数] 格式")
        case_name, count = item.split('*', 1)
        if not count.isdigit():
            raise ValidationError(f"条目[{item}]的执行次数必须为数字")
    return value

之后把自定义验证器加到模型字段上即可:

test_case_list = models.CharField(max_length=200, validators=[validate_comma_separated_case_list], default = "1")

其他优化点

你测试时点击测试按钮会清空已选内容,是因为你把测试按钮的type设为了submit,点击会触发表单提交行为,改成button即可避免该问题:

<input type="button" value="测试" onclick="testButton()">

内容的提问来源于stack exchange,提问作者Wason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:57:01