从GET请求访问pk将返回一个元组

2024-05-12 22:47:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个“搜索”表单,由3个字段组成,为最终的数据库查询提供一些条件。表单通过GET方法提交

其中一个字段是ModelChoiceField,并作为Select小部件呈现。每个选项的值都是相关对象的主键——在我的例子中是Django指定的默认主键。我的理解是,该值是一个整数,在请求中被转换为字符串

因此,在我看来,为了处理数据,我有int(self.request.GET.get("name"))。 但是,我得到的错误表明该值是一个元组:

TypeError字段“id”需要一个数字,但得到了(11,)。

上述异常(int()参数必须是字符串、类似字节的对象或数字,而不是“tuple”)是以下异常的直接原因:

我做错什么了吗?或者,如何以整数形式检索此值,以便完成数据库筛选: Product.objects.filter(id=product_id)

更新: 我在视图中添加了一个方法,该方法有效,但仍不知道是否有更好的方法:

def convert_to_int(self, type_tuple):
    """ Converts tuple value to integer """

    type_int = int(''.join(type_tuple))
    return type_int

Tags: to对象方法字符串selfid数据库表单