getattr - 异常值:模块 'django.db.models' 没有属性 'model_name''
getattr - Exception Value: module 'django.db.models' has no attribute 'model_name''
我在模型名称中使用变量时遇到问题,我想执行此命令:
MyVar.objects.all().delete()
同样,我也有一个问题:
class MyCsvModel(CsvDbModel):
class Meta:
dbModel = MyVar
delimiter = delimiter_csv
这些操作是在 class 的方法上进行的。
变量是在此处方法创建的。
对不起我的英语,我是初学者...
编辑:
我的代码:
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
我得到了这个结果:
Environment:
Request Method: GET Request URL:
http://127.0.0.1:8000/etl/integration/
Django Version: 1.8.18 Python Version: 3.6.1 Installed Applications:
['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'] Installed Middleware:
['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']
Traceback: File
"C:\git\ATH_intranet\env_p3\lib\site-packages\django\core\handlers\base.py"
in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "c:\git\ATH_intranet\etl\views.py" in IntegrationExtraction
188. importation.ImportationTableTemporaire(fichier) File
"c:\git\ATH_intranet\etl\class_perso.py" in ImportationTableTemporaire
112. getattr(models, model_name).objects.all().delete()
Exception Type: AttributeError at /etl/integration/ Exception Value:
module 'django.db.models' has no attribute '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
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
我在模型名称中使用变量时遇到问题,我想执行此命令:
MyVar.objects.all().delete()
同样,我也有一个问题:
class MyCsvModel(CsvDbModel):
class Meta:
dbModel = MyVar
delimiter = delimiter_csv
这些操作是在 class 的方法上进行的。 变量是在此处方法创建的。
对不起我的英语,我是初学者...
编辑:
我的代码:
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
我得到了这个结果:
Environment:
Request Method: GET Request URL: http://127.0.0.1:8000/etl/integration/
Django Version: 1.8.18 Python Version: 3.6.1 Installed Applications: ['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'] Installed Middleware: ['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']
Traceback: File "C:\git\ATH_intranet\env_p3\lib\site-packages\django\core\handlers\base.py" in get_response 132. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "c:\git\ATH_intranet\etl\views.py" in IntegrationExtraction 188. importation.ImportationTableTemporaire(fichier) File "c:\git\ATH_intranet\etl\class_perso.py" in ImportationTableTemporaire 112. getattr(models, model_name).objects.all().delete()
Exception Type: AttributeError at /etl/integration/ Exception Value: module 'django.db.models' has no attribute '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
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