我正在尝试编写一些代码来将Category对象返回给模板。无论我尝试什么,我的测试都会失败。我得到“类别匹配查询不存在”的例外。我尝试使用过滤器,看看我是否拼错了一些东西,令我惊讶的是它完美地工作并返回了我正在寻找的对象,唯一的问题是它在查询集中。我知道.filter()。first()会起作用,但不是那种hacky吗?也许我只需要额外的一双眼睛并做一些愚蠢的事情。 这是测试:
def test_featured_page_receives_correct_list(self):
#Featured cat
c1 = Category.objects.create(title='featured')
#Featured mod 1
mod1 = Mod.objects.create(modname='ModTest', author='TestAuthor', link='https://www.google.com/', dev_site='https://www.google.com/', minecraft_ver='1.6.4')
mod1.categories.add(c1)
#Featured mod 2
mod2 = Mod.objects.create(modname='ModTest2', author='TestAuthor', link='https://www.google.com/', dev_site='https://www.google.com/', minecraft_ver='1.7.2')
mod2.categories.add(c1)
response = self.client.get('/home/')
self.assertEqual(response.context['featured'], c1)
这是非常简单的视图代码:
def featured(request):
featured_cat = Category.objects.get(title='featured')
return render(request, 'featured.html', {'featured': featured_cat})
编辑:它是python 3,以及django的最新稳定版本。