Django models Django如何查询';铸造';将参数字符串转换为适当的字段匹配类型?

Django models Django如何查询';铸造';将参数字符串转换为适当的字段匹配类型?,django-models,casting,django-queryset,behavior,Django Models,Casting,Django Queryset,Behavior,让我们学习Django教程。在第一部分中,我们可以找到这个模型: class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') Django使用它生成以下SQL: CREATE TABLE "polls_poll" ( "id" serial NOT NULL PRIMARY KEY,

让我们学习Django教程。在第一部分中,我们可以找到这个模型:

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
Django使用它生成以下SQL:

CREATE TABLE "polls_poll" (
    "id" serial NOT NULL PRIMARY KEY,
    "question" varchar(200) NOT NULL,
    "pub_date" timestamp with time zone NOT NULL
);
可以注意到,Django自动添加了一个名为
id
AutoField
,它与
IntegerField
类似,因为它处理整数

在第3部分中,我们构建了一个自定义视图,可通过以下url模式访问:

(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'),
请注意URL tail组件如何成为poll_id参数,其值为
'23'
(因此
QuerySet
get
方法生成SQL查询的结果,该查询包含
WHERE
子句,该子句的整数值为
23
,看起来肯定像这样:

SELECT * FROM polls_poll WHERE id=23
当然,Django执行了转换,因为
id
字段是
AutoField
字段。问题是如何,以及何时。具体来说,我想知道调用哪些内部方法,以及调用顺序(类似于)

注意:我查看了
django.db.models
中的源代码,发现了一些
*prep*
方法,但不知道调用它们的时间和地点,更不用说它们是否是我正在寻找的

PS:我知道这不是严格意义上的选角,但我想你明白了。

我想是在。。。它调用(除其他调用外,但这似乎是我感兴趣的一个调用)
connection.ops.field\u cast\u sql
django.db.models.fields.field.db\u type
def detail(request, poll_id):
    try:
        p = Poll.objects.get(pk=poll_id)
SELECT * FROM polls_poll WHERE id=23