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

Django admin带表单的自定义create_lesson动作测试无法创建课程问题咨询

问题根因与修复方案

1. 核心错误:action名称不匹配

你在back_actions.py中定义的动作函数名为create_lessons(末尾带s),但单元测试POST请求里传递的action参数值为create_lesson(少了末尾的s),Django Admin无法匹配到对应的动作执行逻辑,因此不会生成Lesson记录,这是最主要的原因。

2. 修复方法

只需要修正测试代码中的action参数值即可,修改后的测试代码如下:

def test_action_create_lesson(self):
    url = reverse('admin:core_course_changelist')
    start_date = "27-09-2021"
    end_date = "27-11-2021"
    res = self.client.post(url, {
        'action': 'create_lessons', # 补全末尾的s,和定义的函数名保持一致
        'start_date': start_date,
        'end_date': end_date,
        '_selected_action': [self.course1.pk],
    }, follow=True)
    # 可选添加状态码校验,确认请求执行成功
    self.assertEqual(res.status_code, 200)
    self.assertEqual(Lesson.objects.all().count(), 9)

可选优化建议

可以将CreateLessonsDatesForm里的start_date和end_date字段改为DateField类型,Django会自动做日期格式校验、转换为date对象,不需要手动拆分字符串处理,降低出错概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:05