Django TypeError 'method' object is not subscriptable
Question:
I’m going through django tutorial and having the TypeError ‘method’ object is not subscriptable. The error is thrown when the following code executed
class ProductListView(ListView):
model = Product
queryset = Product.objects.all()
def get_context_data(self, *args, **kwargs):
context = super(ProductListView, self).get_context_data(*args, **kwargs)
context["now"] = timezone.now()
context["query"] = self.request.GET.get["q"]
return context
def get_queryset(self, *args, **kwargs):
print(self.request)
qs = super(ProductListView, self).get_queryset(*args, **kwargs)
query = self.request.GET.get["q"]
if query:
qs = self.model.objects.filter(
Q(title__icontains=query) |
Q(description__icontains=query)
)
try:
qs2 = self.model.objects.filter(
Q(price=query)
)
qs = (qs | qs2).distinct()
except:
pass
return qs
The problem line is query = self.request.GET.get["q"]
How do I solve this issue?
Answers:
The problematic line tries to use subscript notation with method get
of the mapping GET
:
query = self.request.GET.get["q"]
The method should be called with:
query = self.request.GET.get("q")
def insert(request):
member = enrolmentapproval(id = request.POST.get['id'], applied_on = request.POST.get['applied_on'], city = request.POST.get['city'], country = request.POST.get['country'], courseId = request.POST.get['courseId'], courseName = request.POST.get['courseNmae'], created = request.POST.get['created'], dob = request.POST.get['dob'], eligibility_verified = request.POST.get['eligibility_verified'], email_id = request.POST.get['email_id'], exactdup = request.POST.get['exactdup'], exam_registration = request.POST.get['exam_registration'], ilearnUserID = request.POST.get['ilearnUserID'], last_action_by = request.POST.get['last_action_by'], localChapterId = request.POST.get['localChapterID'], localChapterName = request.POST.get['localChapterName'], mobile_no = request.POST.get['mobile_no'], modified = request.POST.get['modified'], nationalid = request.POST.get['nationalid'], passportdup = request.POST.get['modified'], passortno = request.POST.get['passportno'], past_nationality = request.POST.get['past_nationality'], permanent_address = request.POST.get['permanent_address'], present_address = request.POST.get['present_address'], program_name = request.POST.get['program_name'], ranking = request.POST.get['ranking'], rejection_remarks = request.POST.get['rejection_remarks'], semester = request.POST.get['semester'], state = request.POST.get['state'], status = request.POST.get['status'], student_name = request.POST.get['student_name'], year = request.POST.get['year'])
member.save()
return redirect(request, '/datatables/base.html')
I’m going through django tutorial and having the TypeError ‘method’ object is not subscriptable. The error is thrown when the following code executed
class ProductListView(ListView):
model = Product
queryset = Product.objects.all()
def get_context_data(self, *args, **kwargs):
context = super(ProductListView, self).get_context_data(*args, **kwargs)
context["now"] = timezone.now()
context["query"] = self.request.GET.get["q"]
return context
def get_queryset(self, *args, **kwargs):
print(self.request)
qs = super(ProductListView, self).get_queryset(*args, **kwargs)
query = self.request.GET.get["q"]
if query:
qs = self.model.objects.filter(
Q(title__icontains=query) |
Q(description__icontains=query)
)
try:
qs2 = self.model.objects.filter(
Q(price=query)
)
qs = (qs | qs2).distinct()
except:
pass
return qs
The problem line is query = self.request.GET.get["q"]
How do I solve this issue?
The problematic line tries to use subscript notation with method get
of the mapping GET
:
query = self.request.GET.get["q"]
The method should be called with:
query = self.request.GET.get("q")
def insert(request):
member = enrolmentapproval(id = request.POST.get['id'], applied_on = request.POST.get['applied_on'], city = request.POST.get['city'], country = request.POST.get['country'], courseId = request.POST.get['courseId'], courseName = request.POST.get['courseNmae'], created = request.POST.get['created'], dob = request.POST.get['dob'], eligibility_verified = request.POST.get['eligibility_verified'], email_id = request.POST.get['email_id'], exactdup = request.POST.get['exactdup'], exam_registration = request.POST.get['exam_registration'], ilearnUserID = request.POST.get['ilearnUserID'], last_action_by = request.POST.get['last_action_by'], localChapterId = request.POST.get['localChapterID'], localChapterName = request.POST.get['localChapterName'], mobile_no = request.POST.get['mobile_no'], modified = request.POST.get['modified'], nationalid = request.POST.get['nationalid'], passportdup = request.POST.get['modified'], passortno = request.POST.get['passportno'], past_nationality = request.POST.get['past_nationality'], permanent_address = request.POST.get['permanent_address'], present_address = request.POST.get['present_address'], program_name = request.POST.get['program_name'], ranking = request.POST.get['ranking'], rejection_remarks = request.POST.get['rejection_remarks'], semester = request.POST.get['semester'], state = request.POST.get['state'], status = request.POST.get['status'], student_name = request.POST.get['student_name'], year = request.POST.get['year'])
member.save()
return redirect(request, '/datatables/base.html')