首页 > 解决方案 > 如何将数据发布到包含复选框的 Django 表单

问题描述

我在 Django 中测试我的注册表单时遇到问题。我正在尝试发出 POST 请求,但无法选择复选框字段。

self.response = self.client.post(url, {
        'username': 'testuser',
        'password': 'testuserpassword',
        'first_name': 'testtt',
        'last_name': 'userrr',
        'image': '',
        'email': 'testuser@gmail.com',
        'gender': 'M',
        'dob': '10/10/1996',
        'hobby': 'Fishing'
    })

这是我的代码行。问题出在爱好上。注册页面由两种形式组成。个人资料表格和爱好表格。Profile 和 Hobby 模型之间存在多对多的关系。

当我发出上述 POST 请求时,我得到了这个(选择一个有效的选择):

在此处输入图像描述

先感谢您!

标签: djangodjango-formsdjango-testingdjango-unittest

解决方案


根据您发布的屏幕截图,每个爱好复选框的值对应于一个整数 - 1、2、3、4 等。这意味着后端期望以表格形式传输爱好 ID。但是,测试不是发送爱好 ID,而是发送名称。

将名称更改为相应的 ID - 例如

self.response = self.client.post(url, {
        ...
        'hobby': 1  # Fishing
    })

推荐阅读