当前位置:  开发笔记 > 编程语言 > 正文

Django查询不会将id值作为整数返回

如何解决《Django查询不会将id值作为整数返回》经验,为你挑选了1个好方法。

我从db表文章中提取主键并尝试将其作为外键保存到db表注释中.我收到错误: int()参数必须是字符串或数字,而不是'QuerySet'

我已经尝试将article_id作为一个int(article_id)但是它返回相同的错误.我已经尝试将值拉入列表但随后返回列表错误.我打印了查询article_id的值,并[{'id': 1L}]在终端中返回,这是db中的第一篇文章.

这种插入外键的方法在更新记录时起作用,但现在不是在创建记录时.如何插入外键?

我正在使用Python 2.7和django 1.9

if request.POST.get("ComentForm") is not None:       
    if InsertComent.is_valid():

        article_id = Article.objects.filter(title = Slug).filter(pub_date = aTimestamp).values("id")
        article_id = article_id
        user_id = request.user.id

        p=Comment(comment=InsertComent.cleaned_data['comment'], article_id=article_id, user_id=user_id)
        p.save()

        messages.add_message(request, messages.SUCCESS,
                            "Thanks for commenting!", extra_tags="ComentForm"                                    
                            )
        return HttpResponseRedirect(reverse('Article',  kwargs={'aTimestamp':aTimestamp,'aSlug':aSlug}))

Alex Morozov.. 6

将您的filter()通话替换为get():

article_id = Article.objects.get(title=Slug, pub_date= aTimestamp).pk

filter()方法返回一个查询集:符合条件的对象列表.要获得一个对象(你的意思是,对吗?)你应该打电话get().

更重要的是,get()它将返回一个Model 实例,你似乎只需要它的主键.这就是上面的代码基本上做的.



1> Alex Morozov..:

将您的filter()通话替换为get():

article_id = Article.objects.get(title=Slug, pub_date= aTimestamp).pk

filter()方法返回一个查询集:符合条件的对象列表.要获得一个对象(你的意思是,对吗?)你应该打电话get().

更重要的是,get()它将返回一个Model 实例,你似乎只需要它的主键.这就是上面的代码基本上做的.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有