我想测试创建Thing的视图,您可以选择多个用户(以及其他详细信息)。
我定义了一个Thing模型,向用户模型提供了一个“用户”ManyToManyField(来自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。
答案 0 :(得分:2)
列表理解是一种从django queryset
创建列表的典型方法,所以你所做的完全没问题。
@PuercoPop建议的内容也很好 - 使用list(created_thing.users.all())
,因为它强制将queryset
评估为包含用户对象的列表类型对象。