1

我有两个模型:

模型.py

class City(models.Model):
    title = models.CharField(max_length=255)
    show = models.BooleanField(default=True)

class Company(models.Model)
    title = models.CharField(max_length=255)
    cities = models.ManyToManyField(City, null=True, blank = True)

管理员.py

class CompanyAdmin(admin.ModelAdmin):
    search_fields = ('title',)
    filter_horizontal = ('cities',)

数据库中大约有23000个城市。

当我在管理员中编辑公司详细信息时,它会永远加载!!!只需访问 admin/myapp/company/12/ 需要 2-3 分钟 - 这太可怕了。

如何加快速度并缓存城市模型查询集?

4

2 回答 2

1

您可以使用raw_id_fields

class CompanyAdmin(admin.ModelAdmin):
    raw_id_fields = ("cities",)
于 2014-06-25T14:16:33.197 回答
1

23000 实际上对于数据库来说“什么都不是”。

首先,您需要确定导致速度变慢的“罪魁祸首”,即查询速度慢。这是很有帮助django-debug-toolbar的地方。然后,您可以手动运行查询EXPLAIN并查看可以改进的地方 - 例如,添加索引可能会有所帮助。

另外,考虑使用django-cache-machineorjohnny-cache包。

另见:

于 2014-06-25T14:20:09.130 回答