2015-04-16 4 views
6

Я пытаюсь создать несколько таблиц для своего приложения, используя django-tables2 и столкнувшись с некоторыми трудностями. Я использую Python 2.7 и Django 1.7. Я следую учебнику, и у меня возникли проблемы.Ошибка Использование django-tables2 - Ожидаемая таблица или набор запросов, а не 'str'

Я добираюсь до точки, где мне нужно создать класс Table для настройки. Тем не менее, всякий раз, когда я делаю это, я получаю следующее сообщение об ошибке:

Expected table or queryset, not 'str'.

После выполнения someresearch это выглядит, как я использую старую версию Джанго-tables2. Тем не менее, я только что установил его вчера, используя pip install django-tables2 и обновил его полчаса назад. Любая идея, как я могу заставить django-tables2 работать правильно?

EDIT - Проблема решена. Я использовал {% render_table people %} вместо {% render_table table %}

ответ

4

я столкнулся с этой проблемой тоже. Первое, что вам нужно сделать, это проверить ваши обновления.
Судо пипа установить Джанго-tables2 --upgrade
Судо пип установить Джанго-tables2-отчеты --upgrade
Обновление не работает шахтную проблемы тоже.
Если вы уже обновили их версию. Вы должны проверить свою реализацию. Если вы используете Class Based View, и вы уверены, что реализуете представление, шаблон, таблицу. Вероятно, вы должны забыть URL.
Так что URL-адреса должны выглядеть так.

/* 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"), 


        ) 

Если это не показатель вашего сайта, вы должны, вероятно, изменить г «^ $» и имя = «индекс»

3

Ну, я думаю, ваша проблема не в версии django-tables2. Здесь я думаю, что когда вы передаете переменную из представления в шаблон, вы передаете строку вместо объекта queryset/table class. Для рабочего примера:

Таблица класса:

class SomeTable(tables.Table): 

    class Meta: 
     model= SomeModel 
     attrs = {"class": "paleblue"} 

Посмотреть Класс:

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

Шаблон:

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

Или вы можете напрямую отправить QuerySet, чтобы сделать таблицу, как:

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) 

и делают это так:

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

Это лучший ответ. –