Я пытаюсь создать один вид для нескольких моделей для приложения django. Приложение в основном является бэкэндом администратора с некоторыми настраиваемыми функциями.Динамическая модель Django DetailView
В представлении обновления каждого элемента, я думаю, лучше иметь только один 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()
...
но я боюсь, что большая база данных приведет к производительности.
Заранее спасибо.