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

时间:2016-01-10 16:43:54

标签: python mysql django foreign-keys

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

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

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

我正在使用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}))

1 个答案:

答案 0 :(得分:6)

filter()来电替换为get()

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

filter()方法返回queryset:符合条件的对象列表。要只获得一个对象(你的意思是,对吗?)你应该调用get()

更重要的是,get()将返回Model instance,而您似乎只需要它的主键。这就是上面的代码基本上做的。