Error Using django-tables2 - Expected table or queryset, not 'str'

后端 未结 4 1380
感动是毒
感动是毒 2021-02-05 19:13

I am trying to create some tables for my application using django-tables2 and running into some difficulties. I am using Python 2.7, and Django 1.7. I am following the tutorial,

相关标签:
4条回答
  • 2021-02-05 19:39

    According to django-tables2 documentation:
    In tutorial/views.py, the class name is PersonListView here

    I changed the class name from PersonListView to PersonTableView And also made the this change in urls.py.

    My problem was solved by doing this.

    Why was this problem caused? Please anyone let me know.

    0 讨论(0)
  • 2021-02-05 19:43

    I encountered that problem, too. The first thing you should do is to check your updates:

    sudo pip install django-tables2 --upgrade
    sudo pip install django-tables2-reports --upgrade
    

    Upgrades didn't work mine problem too.
    If you have already upgraded version of these. You should check your implementation. If you are using Class Based View and you are pretty sure that you implement the view,template,table. You probably forget the urls:

    /* I give the example with respect to other post*/
    urls.py  /*Same dic with table.py,models..etc*/
    
    from .views import SomeTableView   
    urlpatterns = patterns('',
                       url(r"^$", SomeTableView.as_view(), name="index"),
    
                       
                       )
    

    If it is not index of your website you have to probably change the r"^$" and name="index"

    0 讨论(0)
  • 2021-02-05 19:51

    Well I think your problem isn't with the version of django-tables2. Here I think when you are passing a variable from view to template, you are passing a string instead of a queryset/table class object. For working example:

    Table class:

    class SomeTable(tables.Table):
    
        class Meta:
            model= SomeModel
            attrs = {"class": "paleblue"}
    

    View Class:

    class SomeTableView(SingleTableView):
        model = SomeModel
        template_name = 'test.html'
        table_class = SomeTable
    

    Template:

     {% load render_table from django_tables2 %}
     {% render_table table %}   <!-- Here I am passing table class -->
    

    Or you can directly send a queryset to render the table like:

    class SomeView(TemplateView):
         def get(self, request, *args, **kwargs):
             data = SomeModel.objects.all()
             context = self.get_context_data(**kwargs)
             context['table'] = data
             return self.render_to_response(context)
    

    and render it like this:

    {% load render_table from django_tables2 %}
    {% render_table table %} <!-- Here I am passing queryset -->
    
    0 讨论(0)
  • 2021-02-05 20:04

    Had the same problem. I forgot to add SingleTableMixin in the parameters of the view class

    0 讨论(0)
提交回复
热议问题