Как я могу проверить пустой queryset в Django?
Я тестирую представление в Django, которое должно удалить все теги из объекта. Для этого я использую это утверждение:
self.assertEqual(list(Tag.objects.get_for_object(Animal.objects.get(pk=1))),[])
что хорошо работает, как я получаю пустой список. Я завернул запрос Django в список, чтобы избежать этого:
AssertionError: [] != []
где пустой запрос Django сравнивается с пустым списком.
но так как это не то, что мне очень нравится, я задавался вопросом, есть ли лучший способ сделать этот тест.
2 ответов
просто использовать exists
self.assertFalse(Tag.objects.get_for_object(Animal.objects.get(pk=1)).exists())
self.assertEqual(Tag.objects.get_for_object(Animal.objects.get(pk=1).count(), 0)
вы также можете использовать len()
Если вы хотите применить набор запросов, оцениваемый как список!
поочередно и assertQuerysetEqual
полезно, вы можете сделать сравнение с экземпляром 0f django.db.models.query.EmptyQuerySet
! Но используя count()
должен быть самый быстрый способ в большинстве случаев!