簡體   English   中英

Django,更改用戶模型的用戶名字段

[英]Django, alter username field of User model

我希望為 Django 用戶模型中的用戶名字段添加 255 個字符的最大長度。 我還想增加 first_name 和 last_name 字段的最大長度。 我瀏覽了很多帖子,將monkeypatching 視為一種選擇,但我無法理解。 我想知道是否可以編寫自定義遷移文件並以某種方式應用它。 是否有可能,如果有的話,一些關於如何實現它的指導會很棒。

注意:它可能看起來是重復的,但我在 SO 上發現的很多帖子都是關於添加一個新字段,該字段可以使用User.add_to_class()實現。 我打算改變maxlength。

這是您的 Django 項目所需的“大”更改,並且可能應該在開始而不是結束時進行。 作為在生產系統上的用戶模型上經歷過遷移中斷的人,我同意@Burhan Khalid - 保持contrib.auth.models.User模型不變

首先讓我們看一下文檔中的警告,來自替換自定義用戶模型

makemigrations 不支持在創建表后更改此設置,這將導致您必須手動修復架構、從舊用戶表移植數據,並可能手動重新應用某些遷移。

我知道您想“增加”這些字段的長度,但這不是一個微不足道的變化,或者遷移是“打算”處理的。 解決這個問題的“Django 方式”是添加一個滿足新要求的自定義 User 模型。 不幸的是,這意味着如果您在生產服務器上有現有的用戶數據,您將不得不手動處理遷移。 在 Django 中自定義身份驗證的標准說明將幫助您。

您將獲得的好處是:

  • 項目代碼受到保護,不受任何升級的影響。 默認的 User 模型不會有任何自定義。
  • 項目代碼將符合“Django 方式”,方便其他開發人員和團隊成員在未來工作。

我知道這可能不是您想聽到的,但我希望它有所幫助。

暫無
暫無

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

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