在CBV中动态检索模型类的正确方法是什么?
我意识到我必须使用apps.get_model
,但不知道该怎么做。
我想让删除(和其他)观点更多"干"。
class DeleteParamView(generic.DeleteView):
# The following does not work since kwargs cannot be accessed
#model = apps.get_model('patients', 'param' + self.kwargs['param_name'])
def __init__(self, *args, **kwargs):
from django.apps import apps
self.model = apps.get_model('persons', 'param' + self.kwargs['param_name'])
super(DeleteParamView, self).__init__(*args, **kwargs)
不幸的是,无法访问self.kwargs;至少我得到'DeleteParamView' object has no attribute 'kwargs'
我也试图覆盖def get_model()
,但这不是CBV的一部分。
答案 0 :(得分:0)
覆盖get_queryset
方法。
def get_queryset(self):
Model = apps.get_model('persons', 'param' + self.kwargs['param_name'])
return Model.objects.all()