Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django上的通用CRUD视图_Python_Django - Fatal编程技术网

Python django上的通用CRUD视图

Python django上的通用CRUD视图,python,django,Python,Django,我试图为我的模型创建通用视图,但我一直在动态创建一个模型表单。有一种方法可以创建一个模型表单,只需将模型的名称命名为string?您可以通过在视图的局部范围中定义模型表单的类,然后直接在视图的后面创建它的实例来实现。您只需要确保根据模型的名称接收该类。使用django的get_model函数。简单的例子: def my_view(request): model_name = "myapp.MyModel" #make sure the app name is also provide

我试图为我的模型创建通用视图,但我一直在动态创建一个模型表单。有一种方法可以创建一个模型表单,只需将模型的名称命名为string?

您可以通过在视图的局部范围中定义模型表单的类,然后直接在视图的后面创建它的实例来实现。您只需要确保根据模型的名称接收该类。使用django的
get_model
函数。简单的例子:

def my_view(request):
    model_name = "myapp.MyModel"   #make sure the app name is also provided
    from django.db.models import get_model
    model_class = get_model(*model_name.split('.'))

    class MyModelForm(ModelForm):
        class Meta:
            model = model_class
        # other attributes of the form

    form = MyModelForm()
    # ... 

您可以通过在视图的局部范围中定义模型表单的类,然后直接在视图的局部范围之后创建模型表单的实例来实现这一点。您只需要确保根据模型的名称接收该类。使用django的
get_model
函数。简单的例子:

def my_view(request):
    model_name = "myapp.MyModel"   #make sure the app name is also provided
    from django.db.models import get_model
    model_class = get_model(*model_name.split('.'))

    class MyModelForm(ModelForm):
        class Meta:
            model = model_class
        # other attributes of the form

    form = MyModelForm()
    # ... 

“动态创建模型表单”?为什么?什么可能的情况会导致这种情况?你是说创建一个其他模型可以继承的父模型吗?不,我试图从一个模型名为“动态创建一个模型表单”的字符串中获取一个模型表单?为什么?什么情况会导致这种情况?你的意思是创建一个其他模型可以继承的父模型吗?不,我正试图从模型名称的字符串中获取一个modelform。我希望django提供一个方法,这样我就不必在视图中声明类了。我会尝试清理这个解决方案,看看能得到什么。你检查过Django基于类的泛型视图吗?特别是
表单视图
?不过,您仍然无法动态地执行此操作,但可以使用上述方法对其进行扩展。Django没有为您提供这样做的方法。我在方法中将类与视图分离,并在视图中调用它。看起来不错,谢谢。我希望django提供一个方法,这样我就不必在视图中声明类了。我会尝试清理这个解决方案,看看能得到什么。你检查过Django基于类的泛型视图吗?特别是
表单视图
?不过,您仍然无法动态地执行此操作,但可以使用上述方法对其进行扩展。Django没有为您提供这样做的方法。我在方法中将类与视图分离,并在视图中调用它。看起来不错,谢谢。