Django ORM .get()方法不起作用,但.filter()可以

时间:2014-09-11 22:26:19

标签: python django django-models django-views tdd

我正在尝试编写一些代码来将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的最新稳定版本。

0 个答案:

没有答案