Mongoengine + Django-tables2: ожидаемая таблица или набор запросов, а не QuerySet - PullRequest
0 голосов
/ 15 ноября 2018

Я начинаю изучать django и использую его для построения и взаимодействия с нашей mongoDB, используя также mongoengine.Я следую этому уроку , чтобы использовать django-tables2, но я даже не могу его запустить, потому что я получаю ошибку Expected table or queryset, not QuerySet.Это класс, который я использую:

class Companies(Document):
    url = StringField(required=True, unique=True)
    name = StringField(required=True)
    founded = IntField()
    headquarters = EmbeddedDocumentField(HQ)
    description = StringField()

В представлении, которое я просто делаю

def companies(request):
    return render(request, 'toolbox/companies.html', {'companies': Companies.objects.all()})

Я вижу, что вывод mongoengine является типом QuerySet.Как я могу преобразовать его в какой-то тип, который я могу ввести в django-таблицах?Спасибо за помощь!

1 Ответ

0 голосов
/ 19 ноября 2018

Формат данных, ожидаемый django-tables2, представляет собой QuerySet, список диктовок или что-то подобное. Вы можете создать класс, унаследованный от TableData, передать его ванильному django_tables2.Table и поместить его в свой контекст вместо Companies.objects.all().

Это будет выглядеть примерно так:

import django_tables2 as tables
from django_tables2.data import TableQuerysetData


class TableDocumentData(TableQuerysetData):
    # not sure what to override here, since I do not know the mongoengine API at all


def companies(request):
    table = CompanyTable(data=TableDocumentData(Companies.objects.all()))

    return render(request, 'toolbox/companies.html', {'companies': table})
...