Mongoengine + Django-tables2:所需的表或查询集,而不是QuerySet

时间:2018-11-15 11:57:09

标签: python django mongoengine django-tables2

我开始学习django,并使用mongoengine将其用于构建和连接到我们的mongoDB。 我正在跟踪this tutorial以使用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 :(得分:0)

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})