2015-04-05 72 views
1

在CBV中動態檢索模型類的正確方法是什麼?在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

僅供參考,請查看Django的基於類的視圖上的此資源:http://ccbv.co.uk/ – erewok 2015-04-05 16:47:54

回答

0

覆蓋get_queryset方法。

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