我在Django管理员中遇到了延迟字段的奇怪问题。这是模型的结构。
class LightweightManager(models.Manager):
def get_query_set(self):
return super(LightweightManager, self).get_queryset()\
.defer('huge_field')\
.filter(trash=False)
class MyModel(models.Model):
# ...
huge_field = jsonfield.JSONField()
lightweight = LightweightManager()
def delete(self, using=None):
# ...
self.trash = True
从管理员删除MyModel
时,Web服务器超时。在开发服务器中它完成但显然需要很长时间。在删除确认管理页面上,我得到一个相关模型'MyModel_deferred_huge_field'(延迟字段)。据我所知,django.db.models.deletion.Collector中发生了一些不寻常的事情。我很感激你的建议。