2017-04-07 15 views
0

我使用AJAX後調用一組數據發送到我的觀點如下:Django的 - AttributeError的在/藥方/「PrescriptionView」對象有沒有屬性「object_list中」

class PrescriptionView(generic.ListView): 
    template_name = 'meds/prescription.html' 
    context_object_name = 'meds' 
    model = Medicament 

    def post(self, request, **kwargs): 
     selected_ids = request.POST.getlist('selected[]') 
     context = {'meds': Medicament.objects.filter(id__in=selected_ids)} 
     return super(PrescriptionView, self).render_to_response(context) 

,你可以看到我的看法是一個ListView,我要的是要列出與IDS的那些對象從它Medicament.objects.filter(id__in=selected_ids),但由於某種原因,我不斷收到以下錯誤selected_ids:

AttributeError at /prescription/ 
'PrescriptionView' object has no attribute 'object_list' 

Traceback: 

File "/home/nids/cabin/dentist/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response 
    149.      response = self.process_exception_by_middleware(e, request) 

File "/home/nids/cabin/dentist/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response 
    147.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/home/nids/cabin/dentist/lib/python3.5/site-packages/django/views/generic/base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 

File "/home/nids/cabin/dentist/lib/python3.5/site-packages/django/views/generic/base.py" in dispatch 
    88.   return handler(request, *args, **kwargs) 

File "/home/nids/cabin/meds/views.py" in post 
    38.   return super(PrescriptionView, self).render_to_response(context) 

File "/home/nids/cabin/dentist/lib/python3.5/site-packages/django/views/generic/base.py" in render_to_response 
    132.    template=self.get_template_names(), 

File "/home/nids/cabin/dentist/lib/python3.5/site-packages/django/views/generic/list.py" in get_template_names 
    200.   if hasattr(self.object_list, 'model'): 

Exception Type: AttributeError at /prescription/ 
Exception Value: 'PrescriptionView' object has no attribute 'object_list' 

編輯

Ajax調用:

jQuery(document).ready(function($) { 
     $("#continue").click(function() { 
      var selected = $("#meds").bootgrid("getSelectedRows"); 
      console.log(selected); 
      $.ajax({ 
       type: "POST", 
       url: "{% url 'meds:prescription' %}", 
       data: {selected:'selected' , csrfmiddlewaretoken: "{{ csrf_token }}"}, 
       success: function(result) { 
        $('#message').html("<h2>Contact Form Submitted!</h2>") 
       } 
      }); 
     }); 
    }); 

注意:選擇是一個數組

回答

1

一次,在發送數據的陣列我已經使用以下模式:

var roles = data_selected(); 

$.ajax({ 
    type: 'POST', 
    url: '/get_roles/', 
    data: {'roles[]': roles}, 
    }); 
}); 

並且,在django的視圖,我

def get_roles(request): 
    roles = request.POST.getlist('roles[]') 
    .... 

你可以分享你的ajax調用?我認爲發送數據時可能會混淆數據?

漢鼎POST請求:

def post(self, request, **kwargs): 
     selected_ids = request.POST.getlist('selected[]') 
     meds = self.get_queryset().filter(id__in=selected_ids) 
     return render(request, self.template_name, {'meds': meds }) 
+0

我只是把它添加到後 – Meryem

+0

望着文檔:https://docs.djangoproject.com/en/1.10/topics/class-based-views/generic -display /#making-friendly-template-contexts,我沒有看到任何錯誤。但是,我想看看你是如何渲染你的列表。你正在循環模板中的「藥物」,對嗎? –

+0

我已經修改了上面的處理請求: 'def'post(self,request,** kwargs): selected_ids = request.POST.getlist('selected []') meds = self.get_queryset ().filter(id__in = selected_ids) return render(request,self.template_name,{'meds':meds})''' –

相關問題