我正在嘗試使用我的Django 1.6擴展用戶模型的代碼。該代碼試圖獲得該模型是這樣的:Django get_model嵌套的應用程序和app_label
model = models.get_model(app_label, model_name)
我相信我遇到的問題是,我的應用程序是一個「應用程序」目錄下嵌套,像apps.account.UserProfile
。
我相信get_model只需要標籤和名稱,但它可以處理嵌套的應用程序標籤?
我正在嘗試使用我的Django 1.6擴展用戶模型的代碼。該代碼試圖獲得該模型是這樣的:Django get_model嵌套的應用程序和app_label
model = models.get_model(app_label, model_name)
我相信我遇到的問題是,我的應用程序是一個「應用程序」目錄下嵌套,像apps.account.UserProfile
。
我相信get_model只需要標籤和名稱,但它可以處理嵌套的應用程序標籤?
我建議你使用get_user_model()
,這是專門爲此目的而設計的。從docs:
你應該使用
django.contrib.auth.get_user_model()
引用用戶模式。此方法將返回當前活動的User
模型 - 如果指定了模型,則返回自定義User
模型,否則返回User
。
那麼,首先,我沒有「[替代](https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#substitution-a-custom-user-model)」用戶模型,我「[擴展](https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#extending-the-existing-user-model)」它。其次,以上是我的具體示例,更多的是關於如何在嵌套應用程序中使用'get_model'。 –
@Derek:好的,請注意,'django.db.models.get_model()'不是Django公共API的一部分。從1.7開始,記錄的方法是使用'AppConfig.get_model()'。請參閱[這裏](https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.get_model)。 –
非常感謝,凱文! –
要回答我自己的問題,Django似乎「聰明」足以知道應用程序是否嵌套。所以只需傳遞'get_model('account','UserProfile')'上面的作品。 –