python – Prefetch_related()连接第一个项目的所有内容
我几乎可以肯定我在这里做错了什么,但我无法理解.
在我的应用程序中,Items可以存储在Workspaces中,如下所示: # models.py class Item(models.Model): name = models.CharField() class Workspace(models.Models): name = models.CharField() items = models.ManyToManyField( Item,related_name="workspaces",null=True,blank=True,default=None) 然后,在我的ListView中,我想显示Items及其相关的工作区: # views.py class ListItems(ListView): model = Items template_name = "list_items.html" def get_queryset(self): return self.model.objects.all().prefetch_related('workspaces') 该错误发生在我的模板中: # list_items.html {% for object in object_list %} {{ object.name }} Workspaces : {% for workspace in object.workspaces.all %} {{ workspace.name }} {% empty %} No workspaces {% endfor %} {% endfor %} 假设我有10个不同的项目,还有一个名为“Foo”的文件夹.而不是像这样显示我的模板: Item1 workspaces: Foo Item2 workspaces: Foo Item3 workspaces: Foo #etc... 我得到以下输出: Item1 workspaces: Foo Foo Foo Foo Foo Foo Foo Foo Foo Foo # 1 Foo per item in list Item2 workspaces: No workspaces Item3 workspaces: No workspaces #etc... 似乎prefetch_related()将所有工作空间与列表中的第一项相关联. 我在这做错了什么? 我的应用程序要复杂得多,所以也许我将它简化得太多了.特别是,我的get_queryset()方法在prefetch_related()指令之前涉及更多过滤器. 谢谢您的帮助 ! 解决方法
我刚刚意识到我忘了一个非常重要的元素:我正在使用django-polymorphic作为我的基本模型.
我跑了som e测试并且没有多态,prefetch_related按预期工作. 我在django-polymorphic bug tracker中打开了一个问题:https://github.com/chrisglass/django_polymorphic/issues/68 我真的为这个错误道歉,我很抱歉失去你的时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |