At least by looking at the source code https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/views.py
It seems you need to have a "table_data" attribute, or a "object_list" attribute, or define a "get_table_data" method in your class On 1/8/17, Ali khan <[email protected]> wrote: > I am using Django-table2 for SingleTableMixin and I am getting this error > which I am not able to come around. Error says I need to present data in > query to be able to make it work. Following is the code and guidance is > requested. > > class ProductListView(SingleTableMixin, generic.TemplateView): > > template_name = 'dashboard/catalogue/product_list.html' > form_class = ProductSearchForm > productclass_form_class = ProductClassSelectForm > table_class = ProductTable > context_table_name = 'products' > def get_context_data(self,**kwargs): > ctx = super(ProductListView, self).get_context_data(**kwargs) > ctx['form'] = self.form > ctx['productclass_form'] = self.productclass_form_class() > return ctx > def get_description(self, form): > if form.is_valid() and any(form.cleaned_data.values()): > return _('Product search results') > return _('Products') > def get_table(self, **kwargs): > if 'recently_edited' in self.request.GET: > kwargs.update(dict(orderable=False)) > table = super(ProductListView, self).get_table(**kwargs) > table.caption = self.get_description(self.form) > return table > def get_table_pagination(self): > return dict(per_page=20) > def filter_queryset(self, queryset): > > return filter_products(queryset, self.request.user) > def get_queryset(self): > > queryset = Product.browsable.base_queryset() > queryset = self.filter_queryset(queryset) > queryset = self.apply_search(queryset) > return queryset > > Error I am getting is below: > > Request Method: GET > Request URL: http://localhost:8000/dashboard/catalogue/ > Django Version: 1.8.16 > Python Version: 2.7.12 > Installed Applications: > ('django.contrib.admin', > 'django.contrib.auth', > 'django.contrib.contenttypes', > 'django.contrib.sessions', > 'django.contrib.sites', > 'django.contrib.flatpages', > 'django.contrib.messages', > 'django.contrib.staticfiles', > 'phonenumber_field', > 'haystack', > 'default.templatetags', > 'treebeard', > 'sorl.thumbnail', > 'django_tables2', > 'compressor', > 'widget_tweaks', > 'catalogue', > 'catalogue.reviews', > 'customer', > 'customer.alerts', > 'customer.notifications', > 'customer.wishlists', > 'analytics', > 'partner', > 'offer', > 'order', > 'address', > 'basket', > 'voucher', > 'wishlist', > 'shipping', > 'promotions', > 'payment', > 'dashboard', > 'dashboard.catalogue', > 'dashboard.communications', > 'dashboard.orders', > 'dashboard.offers', > 'dashboard.pages', > 'dashboard.partners', > 'dashboard.promotions', > 'dashboard.ranges', > 'dashboard.reports', > 'dashboard.reviews', > 'dashboard.shipping', > 'dashboard.users', > 'dashboard.vouchers', > 'purl') > Installed Middleware: > ('django.contrib.sessions.middleware.SessionMiddleware', > 'django.middleware.common.CommonMiddleware', > 'django.middleware.csrf.CsrfViewMiddleware', > 'django.contrib.auth.middleware.AuthenticationMiddleware', > 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', > 'django.contrib.messages.middleware.MessageMiddleware', > 'django.middleware.clickjacking.XFrameOptionsMiddleware', > 'django.middleware.security.SecurityMiddleware', > 'basket.middleware.BasketMiddleware', > 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware') > > Traceback: > File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in > get_response > 132. response = wrapped_callback(request, > *callback_args, **callback_kwargs) > File "C:\Python27\lib\site-packages\django\contrib\auth\decorators.py" in > _wrapped_view > 22. return view_func(request, *args, **kwargs) > File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view > 71. return self.dispatch(request, *args, **kwargs) > File "C:\Python27\lib\site-packages\django\views\generic\base.py" in > dispatch > 89. return handler(request, *args, **kwargs) > File "C:\Python27\lib\site-packages\django\views\generic\base.py" in get > 158. context = self.get_context_data(**kwargs) > File "C:\Users\AliKhan\supermarket\market\dashboard\catalogue\views.py" in > get_context_data > 77. ctx = super(ProductListView, self).get_context_data(**kwargs) > File "C:\Python27\lib\site-packages\django_tables2\views.py" in > get_context_data > 107. table = self.get_table(**self.get_table_kwargs()) > File "C:\Users\AliKhan\supermarket\market\dashboard\catalogue\views.py" in > get_table > 91. table = super(ProductListView, self).get_table(**kwargs) > File "C:\Python27\lib\site-packages\django_tables2\views.py" in get_table > 82. table = table_class(self.get_table_data(), **kwargs) > File "C:\Python27\lib\site-packages\django_tables2\tables.py" in __init__ > 348. self.data = self.TableDataClass(data=data, table=self) > File "C:\Python27\lib\site-packages\django_tables2\tables.py" in __init__ > 45. ' list(data) -- {} has > neither'.format(type(data).__name__) > Exception Type: ValueError at /dashboard/catalogue/ > Exception Value: data must be QuerySet-like (have count() and order_by()) > or support list(data) -- NoneType has neither > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAAXvsYkWokyBpF2rzGThJeKFN2%3DZR2ezM0rSbDXnjyQr0tu_ug%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CALn3ei2AehSe77Mr3cmuAiB6KXM3%2BQjHkg%3D2f9ZO_jsPT18eTQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

