【问题标题】:Django get_model nested app and app_labelDjango get_model 嵌套应用程序和 app_label
【发布时间】:2014-02-24 18:50:45
【问题描述】:

我正在处理尝试使用我的 Django 1.6 扩展用户模型的代码。代码尝试像这样获得该模型:

model = models.get_model(app_label, model_name)

我认为我遇到的问题是我的应用嵌套在“应用”目录下,例如 apps.account.UserProfile

我相信 get_model 只接受标签和名称,但它可以处理嵌套的应用标签吗?

【问题讨论】:

  • 回答我自己的问题,Django 似乎“聪明”到足以知道应用程序是否嵌套。所以只要通过上面的get_model('account','UserProfile') 就可以了。

标签: django model nested


【解决方案1】:

我建议您使用专为此目的而设计的get_user_model()。来自docs

您应该使用django.contrib.auth.get_user_model() 引用用户模型。此方法将返回当前活动的User 模型——如果指定了自定义User 模型,否则返回User

【讨论】:

  • 好吧,首先,我没有“substitute”用户模型,我是“extended”它。其次,以上更多是我的具体示例,更多关于如何将get_model 与嵌套应用程序一起使用。
  • @Derek:好的,请注意django.db.models.get_model() 不是 Django 的公共 API 的一部分。从 1.7 开始,记录在案的方法是使用 AppConfig.get_model()。见here
猜你喜欢
  • 2013-11-12
  • 2020-12-16
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多