簡體   English   中英

在Django模型中將字段命名為“id”是否安全?

[英]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()是不太常用的內置函數之一。
  • 在類中隱藏內置函數比在函數內部或全局內容中隱藏內置函數更不容易引起混淆,因為類變量通常以類或實例的名稱為前綴,后跟一個點。
  • 在Django代碼中使用.id字段是慣用的,事實上,如果你不這樣做,Django會默認創建這個字段。

是的,如果要為Django模型添加自定義主鍵,則可以使用id ,就像在文檔中鏈接的示例一樣。 但是,對於常規用法,Django會自動創建一個定義為的id字段

 id = models.AutoField(primary_key=True) 

在這里閱讀更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM