python - getattr - 异常值 : module 'django.db.models' has no attribute 'model_name' '

标签 python django variables getattr

我在模型名称中使用变量时遇到问题,我想执行此命令:

MyVar.objects.all().delete()

以同样的方式我必须解决这个问题:

class MyCsvModel(CsvDbModel):
            class Meta:
                dbModel = MyVar
                delimiter = delimiter_csv

这些 Action 是在类的方法上进行的。 并在此处创建变量。

对不起我的英语,我是初学者...

编辑:

我的代码:

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

关于python - getattr - 异常值 : module 'django.db.models' has no attribute 'model_name' ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45218671/

相关文章:

python - Matplotlib:检查空图

python - Flask self.errors.append() - AttributeError : 'tuple' object has no attribute 'append'

Django 1.7 ImageField 表单验证

此处不允许 java.util.Scanner 对象声明

java - 无法从静态上下文引用非静态变量

Python i18n 使用 pygettext.py

python - 根据共同值将列表合并在一起

Django 外键 : settings. AUTH_USER_MODEL 一直为 form.save 提供空值

c# - 声明变量只是为了使代码易于阅读,编程最佳实践 C#

javascript - PHP 写入文件时行结尾错误