Django DetailView动态模型

用户名

我正在尝试为Django应用程序的多个模型创建一个视图。该应用程序基本上是具有一些自定义功能的管理员后端。

在每个项目的更新视图中,我认为最好只定义一个DetailView并动态获取模型名称。

1)这是正确的方法还是每个模型最好使用一个DetailView?

2)有可能吗?如果是这样,怎么办?

views.py

class EquipoUpdate(UpdateView):
    model = DYNAMIC_MODEL
    fields = ['codigo', 'equipo', 'nombre', 'fabricante', 'modelo', 'fecha_alta', 'fecha_baja', 'descripcion','datos_contacto']
    success_url = reverse_lazy('listados-mantenimiento', kwargs={'model_type': 'componentes'})
    template_name = 'manager/mto/mto_update.html'

urls.py

    url(r'^mantenimiento/(?P<model_type>\w{0,50})/update/(?P<pk>\d+)$', views.EquipoUpdate.as_view()),

DYNAMIC_MODEL是我想从urls.py获取的变量model_type

我的第一种方法是使用def get_context_data

def get_context_data(self, **kwargs):
    modelo = self.kwargs['model_type']
    context = super(MtoListView, self).get_context_data(**kwargs)
    if (modelo == 'equipos'):
        context['listado'] = Equipo.objects.all()
    elif (modelo == 'componentes'):
        context['listado'] = Componente.objects.all()
    ...

但恐怕大型数据库会导致性能问题。

提前致谢。

拉胡尔·古普塔(Rahul Gupta)

从中get_queryset()获取模型后,您可以覆盖该方法以返回适当的模型的queryset model_kwarg

要从model_typekwarg获取模型,可以创建MODEL_TYPE_KWARGS_TO_MODEL_MAPPING字典。它将通过使用model_typekwarg作为键在模型上执行查找来返回模型当然,您将不得不为无效model_type案例添加错误处理

您可以执行以下操作:

class DynamicModelUpdate(UpdateView):

    def get_queryset(self):
         model = MODEL_TYPE_KWARGS_TO_MODEL_MAPPING[self.kwargs['model_type']]
         return model.objects.all()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:如何使用动态(非模型)数据预填充FormView?

来自分类Dev

动态访问Django模型字段python

来自分类Dev

Django模板按模型字段动态过滤

来自分类Dev

如何在Django中动态更新模型?

来自分类Dev

在Django模型中创建动态下拉菜单

来自分类Dev

将动态字段添加到Django管理模型表单

来自分类Dev

Django模型:动态更改db_table

来自分类Dev

用`type`动态创建Django模型

来自分类Dev

使用Django动态将字段添加到模型表单

来自分类Dev

Django DetailView +显示另一个模型的相关记录

来自分类Dev

Django:存储多个且动态排序的模型序列

来自分类Dev

django通用DetailView

来自分类Dev

Django对象模型-动态设置值

来自分类Dev

Django DetailView动态模型

来自分类Dev

以表格形式加载动态模型属性-Django

来自分类Dev

Django动态访问模型属性

来自分类Dev

根据Django中的模型动态创建URL

来自分类Dev

在DetailView中分页[Django]

来自分类Dev

Django DetailView +显示另一个模型的相关记录

来自分类Dev

Django中的动态模型字段

来自分类Dev

在Django框架中使用动态模型

来自分类Dev

Django-从Detailview中的另一个模型获取数据

来自分类Dev

以表格形式加载动态模型属性-Django

来自分类Dev

Django DetailView发生错误?

来自分类Dev

动态长度Django模型字段

来自分类Dev

Django 模型表单 - 动态创建的字段的顺序

来自分类Dev

如何在 django DetailView 中订购嵌套模型

来自分类Dev

用于两个单独查询/模型的 Django DetailView

来自分类Dev

使用 Django 处理动态模型/数据