0

複数のユーザーを選択する Thing の作成を行うビューをテストしたいと思います (他の詳細の中でも特に)。

User モデルに「 users」 ManyToManyField を持つ Thing モデルを定義しました(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 に答える