【问题标题】:Mongoengine + Django-tables2: Expected table or queryset, not QuerySetMongoengine + Django-tables2:预期的表或查询集,而不是查询集
【发布时间】:2018-11-15 11:57:08
【问题描述】:

我开始学习 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-tables 上输入的某种类型? 感谢您的帮助!

【问题讨论】:

    标签: python django mongoengine django-tables2


    【解决方案1】:

    django-tables2 期望的数据格式是 QuerySet、dict 列表或类似的东西。您可以创建一个继承自 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})
    

    【讨论】:

    • 感谢您的回复!我正在搜索有关 TableData 和 TableQuerysetData 的信息,以了解如何创建 TableDocumentData。只是一个愚蠢的问题,您的示例中的 CompanyTable 是什么?这是普通的“tables.Table”吗?
    • 是的,有一些疏漏。我会在有时间的时候尝试解决这个问题,如果您在此期间设法解决这个问题,请考虑为您自己的问题添加答案
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2015-06-23
    • 2021-04-24
    • 2020-10-25
    • 2011-08-24
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多