django pk vs id 有什么区别,用法是什么?如何使用?

如果没有明确指定,默认情况下id是作为主键创建的字段的名称。 

而pk独立于实际主键。 即您不必关心主键字段是被称为id还是user_id或其他什么,使用pk,可以提高代码的一致性。

当一张表具有不同主键字段的模型时,id更有用。

实际上大部分表使用id和pk 并没有什么区别,但建议使用pk。

id与pk速度如何?

%timeit obj.id
46 ns ± 0.187 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit obj.pk
347 ns ± 11.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

经过测试发现,使用id的确是比pk快,这是因为meta在查找pk属性需要花的事件。不过请注意该单位是纳秒

pk在django的相关代码

def _get_pk_val(self, meta=None):
    meta = meta or self._meta
    return getattr(self, meta.pk.attname)

def _set_pk_val(self, value):
    return setattr(self, self._meta.pk.attname, value)

pk = property(_get_pk_val, _set_pk_val)

在网络请求中,使用pk会消耗三分之一微秒时间,可以忽略不计。

结论:

    使用id和pk没有什么区别,

相关文章

注:所有源代码均实测运行过。所有源代码均已上传CSDN,请有...
继承APIView和ViewSetMixin;作用也与APIView基本类似,提供...
一、Django介绍Python下有许多款不同的 Web 框架。Django是重...
本文从nginx快速掌握到使用,gunicorn快速掌握到使用,实现小...
uniapp微信小程序订阅消息发送服务通知
Django终端打印SQL语句 1 Setting配置: 2 默认python 使用的...