[英]django.core.exceptions.ImproperlyConfigured: Field name `id` is not valid for model
[英]Is it safe to name field as 'id' in Django model?
class MyModel(models.Model):
id = models.IntegerField(primary_key=True)
要么
class MyModel(models.Model):
id_ = models.IntegerField(primary_key=True)
根据pep8,应该使用single_trailing_underscore_来避免与Python关键字冲突,但是名为id_的列看起来很丑陋并且可能导致对数据库级别不熟悉python的人造成混淆。
Django docs使用'id'列名: https : //docs.djangoproject.com/en/1.11/ref/models/fields/#uuidfield 。
将此字段命名为“id”是否安全?
Python允许在任何上下文中隐藏内置函数。 Builtins在LEGB模型中处于最低优先级(局部变量,封闭范围,全局变量,内置变量)。 同时,其他模块中的代码不会受到此阴影的影响; id
仍将引用其他上下文中的内置函数。 所以影子内置者是完全安全的。 “真正的”问题是它是否是一个好主意。 在这种情况下:
id()
是不太常用的内置函数之一。 .id
字段是惯用的,事实上,如果你不这样做,Django会默认创建这个字段。 是的,如果要为Django模型添加自定义主键,则可以使用id
,就像在文档中链接的示例一样。 但是,对于常规用法,Django会自动创建一个定义为的id
字段
id = models.AutoField(primary_key=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.