假设这是我的models.py
models.py
from django.db import models
from django.contrib.auth.models import *
# Create your models here.
class A(models.Model):
p = models.CharField(max_length=200)
class B(models.Model):
d = models.OneToOneField(User)
e = models.ForeignKey(A)
class C(models.Model):
f = models.CharField(max_length=200)
g = models.ForeignKey(A,related_name="c")
我想在我的观点中导入这些模型。
from app import models
def import():
list=['A','B','C']
for x in list:
from model import x
import()
请建议我一个更好的解决方案,我是python django.Thanks的新手。
修改
我想出于某种原因使用这个循环。
答案 0 :(得分:1)
最好只导入模型文件并从那里引用它们。
from my_app import models
models.A.objects.all()
models.B.objects.all()
避免使用from my_app import *
:它可能导致混淆和命名空间污染,而且显式优于隐式。
但是当然如果你已经知道模型列表,你可以直接导入它们:
from my_app.models import A, B, C
答案 1 :(得分:0)
你也可以做一些类似这个答案的建议 Dynamic module import in Python
import imp
import os
def load_from_file(file path, expected_class):
class_inst = None
mod_name,file_ext = os.path.splitext(os.path.split(filepath)[-1])
if file_ext.lower() == '.py':
py_mod = imp.load_source(mod_name, filepath)
elif file_ext.lower() == '.pyc':
py_mod = imp.load_compiled(mod_name, filepath)
if hasattr(py_mod, expected_class):
class_inst = getattr(py_mod, expected_class)()
return class_inst
即
module = load_from_file(file_path, expected_class)
答案 2 :(得分:-1)
我的理解是您尝试在视图文件中导入所有类型的模型
简单的方法是:
from app.models import *