在CBV中动态检索模型类

时间:2015-04-05 15:37:54

标签: django django-views

在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的一部分。

1 个答案:

答案 0 :(得分:0)

覆盖get_queryset方法。

def get_queryset(self):
    Model = apps.get_model('persons', 'param' + self.kwargs['param_name'])
    return Model.objects.all()