getattr - 异常值:模块 'django.db.models' 没有属性 'model_name''
Posted
技术标签:
【中文标题】getattr - 异常值:模块 \'django.db.models\' 没有属性 \'model_name\'\'【英文标题】:getattr - Exception Value: module 'django.db.models' has no attribute 'model_name''getattr - 异常值:模块 'django.db.models' 没有属性 'model_name'' 【发布时间】:2017-12-26 09:13:50 【问题描述】:我在模型名称中使用变量时遇到问题,我想使用这个命令:
MyVar.objects.all().delete()
同样地,我必须解决这个问题:
class MyCsvModel(CsvDbModel):
class Meta:
dbModel = MyVar
delimiter = delimiter_csv
这些动作在类的方法上。 并且变量是在这里方法上创建的。
对不起我的英语,我是初学者......
编辑:
我的代码:
from etl.models import MvmtjExportTemps, MvmtjExport
from django.db import models
[...]
model_name = self.table_temporaire[self.numero_edi]
getattr(models, model_name).objects.all().delete()
class MyCsvModel(CsvDbModel):
class Meta:
dbModel = getattr(models, model_name)
delimiter = delimiter_csv
我有这个结果:
环境:
请求方法:GET 请求 URL: http://127.0.0.1:8000/etl/integration/
Django 版本:1.8.18 Python 版本:3.6.1 已安装的应用程序: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'pec', 'topo'、'bootstrap3_datetime'、'todo_app'、'debug_toolbar'、'bi'、 'etl'] 已安装的中间件: ['debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
追溯:文件 “C:\git\ATH_intranet\env_p3\lib\site-packages\django\core\handlers\base.py” 在 get_response 132. response = Wrapped_callback(request, *callback_args, **callback_kwargs) 集成提取中的文件“c:\git\ATH_intranet\etl\views.py” 188. importation.ImportationTableTemporaire(fichier) 文件 ImportationTableTemporaire 中的“c:\git\ATH_intranet\etl\class_perso.py” 112. getattr(models, model_name).objects.all().delete()
异常类型:/etl/integration/ 处的 AttributeError 异常值: 模块“django.db.models”没有属性“MvmtjExportTemps”
编辑 2:
最后我需要像这样在 import 和 getattr 中添加位置:
import etl.models
#vidange table temporaire
model_name = self.table_temporaire[self.numero_edi]
getattr(etl.models, model_name).objects.all().delete()
# creation de la class correspondant a la table temporaire
class MyCsvModel(CsvDbModel):
class Meta:
dbModel = getattr(etl.models, model_name)
delimiter = delimiter_csv
【问题讨论】:
【参考方案1】:import models
model_name = "X"
getattr(models, model_name).objects.all().delete()
class MyCsvModel(CsvDbModel):
class Meta:
dbModel = getattr(models, model_name)
delimiter = delimiter_csv
【讨论】:
我一直在寻找,但我收到此消息:没有名为“模型”的模块 很抱歉你有这个消息模块'django.db.models'没有属性'MvmtjExportTemps',我已经添加了“从app.models import *” 你应该使用 from django.db import models 拜托,我已经更新了我的帖子。你对我的问题有最后的想法吗? 不要使用“从 django.db 导入模型”。这。使用“导入模型”以上是关于getattr - 异常值:模块 'django.db.models' 没有属性 'model_name''的主要内容,如果未能解决你的问题,请参考以下文章
Django 使用getattr() 方法获取配置文件的变量值