示例:(Django,views.py)
def create(request, mod):
#mod is a modelname
if request.method == 'POST':
form = globals()[mod+"Form"](request.POST)
if form.is_valid():
new_file_num = form.save(commit=False)
>>>> if entry.objects.filter(fileTypeNumber=1).exists():
我的问题就在这里。
if entry.objects.filter( ....
相反,我想:
mod = entry;
if mod.objects.filter( ....
这里的总体目标是对具有不同字段的多个模型使用相同的“视图”。 有一个更好的方法吗?该视图基本上是分配文件编号然后保存它。
提前致谢
答案 0 :(得分:0)
从实例中提取类。
mod = my_instance.__class__
if mod.objects.filter(fileTypeNumber=1).exists():
答案 1 :(得分:0)
你可能会做类似的事情:
from models import Foo, Bar
def create_view(model):
# model is the actual model class (not instance)
def view(request):
form = globals()[model.__name__ + "Form"]
if model.objects.filter(fileTypeNumber=1).exists():
pass
# whatever you do with it
return view
foo_view = create_view(Foo)
bar_view = create_view(Bar)
这会为Foo
和Bar
模型制作两个视图。但是如果你为每个模型设置了不同的字段(或者如果你正在验证或做其他需要不同处理的事情),你可能最好只为每个模型手工制作不同的视图,而不是做这种抽象创建功能