Django中的通用CRUD视图

1 投票
1 回答
951 浏览
提问于 2025-04-17 04:40

我正在尝试为我的模型创建通用视图,但在动态创建模型表单时遇到了困难。有没有办法仅通过模型的名称字符串来创建一个模型表单呢?

1 个回答

4

你可以通过在视图的本地范围内定义模型表单的类,然后直接创建它的实例来实现这个功能。你只需要确保根据模型的名称来获取这个类。可以使用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()
    # ... 

撰写回答