Я пытаюсь проверить свои взгляды на Джанго. Это представление передает QuerySet в шаблон:
def merchant_home(request, slug):
merchant = Merchant.objects.get(slug=slug)
product_list = merchant.products.all()
return render_to_response('merchant_home.html',
{'merchant': merchant,
'product_list': product_list},
context_instance=RequestContext(request))
и проверить:
def test(self):
"Merchant home view should send merchant and merchant products to the template"
merchant = Merchant.objects.create(name='test merchant')
product = Product.objects.create(name='test product', price=100.00)
merchant.products.add(product)
test_client = Client()
response = test_client.get('/' + merchant.slug)
# self.assertListEqual(response.context['product_list'], merchant.products.all())
self.assertQuerysetEqual(response.context['product_list'], merchant.products.all())
РЕДАКТИРОВАТЬ Я использую self.assertQuerysetEqua
l вместо self.assertListEqual
. К сожалению, это все еще не работает, и терминал отображает это: ['<Product: Product object>'] != [<Product: Product object>]
assertListEqual
повышает: 'QuerySet' object has no attribute 'difference'
и assertEqual
также не работает, хотя self.assertSetEqual(response.context['product_list'][0], merchant.products.all()[0])
проходит,
Я предполагаю, что это потому, что QuerySets - это разные объекты, даже если они содержат одинаковые экземпляры модели.
Как проверить, что два QuerySet содержат одинаковые данные? Я даже проверяю это правильно? Это мой 4-й день обучения Джанго, поэтому я хотел бы узнать лучшие практики, если это возможно. Благодарю.