0

我想测试创建事物的视图,您可以在其中选择多个用户(以及其他详细信息)。

我定义了一个 Thing 模型,有一个“用户”ManyToManyField 到 User 模型(来自 Django 发布的身份验证应用程序)。

这是我的测试代码:

class ViewsTest(TestCase):
    def test_create(self):
        my_users = [...some User instances...]
        response = self.client.post("/create/", {...stuff...,
                                'users': [user.id for user in my_users]})
        self.assertEqual(200, response.status_code)
        created_thing = Thing.objects.get(...)
        self.assertListEqual(my_users, [user for user in created_thing.users.all()])

这个测试通过了,所以一切都很好,但我对最后的列表理解感到恼火。没有更优雅的方式将created_thing.users作为列表吗?

我正在使用 Django 1.4.1。

4

1 回答 1

2

列表理解是从 django 创建列表的典型方法,queryset因此您所做的非常好。

@PuercoPop 的建议也很好 - 使用list(created_thing.users.all())因为它强制将评估结果queryset转换为包含用户对象的列表类型对象。

于 2012-11-13T09:38:12.193 回答