Geodjango在经理中使用defer导致保存时的keyerror

时间:2017-01-18 16:07:39

标签: django deferred geodjango

我有几个位置模型,每个都有一个名为mpoly的MultiPolygonField,我注意到在Django管理员中获取查询集或列表时它真的很慢,所以我做了一个默认管理器来推迟mpoly字段:

class WithoutMpolyManager(models.Manager):

def get_queryset(self):
    return super(WithoutMpolyManager, self).get_queryset().defer('mpoly')

这会在管理员中加快速度并获得一个我不需要mpoly字段的查询集,获得单个实例可以很好地访问mpoly字段。问题是我想在管理员中保存实例,否则我收到错误:

File "/local/lib/python2.7/site-packages/django/db/models/base.py", line 692, in save
isinstance(self.__class__.__dict__[f.attname], DeferredAttribute))
KeyError: 'name'

name是另一个不被延迟的字段,无论如何要修复这个或其他方式来加速查询,例如admin list不需要mpoly?

0 个答案:

没有答案