Python django上的通用CRUD视图
我试图为我的模型创建通用视图,但我一直在动态创建一个模型表单。有一种方法可以创建一个模型表单,只需将模型的名称命名为string?您可以通过在视图的局部范围中定义模型表单的类,然后直接在视图的后面创建它的实例来实现。您只需要确保根据模型的名称接收该类。使用django的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
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没有为您提供这样做的方法。我在方法中将类与视图分离,并在视图中调用它。看起来不错,谢谢。