Django管理缓存m2m关系

时间:2014-06-25 14:07:46

标签: django django-models django-cache django-caching django-cache-machine

我有两种模式:

models.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)

admin.py

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

数据库中约有23000个城市。

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用raw_id_fields

class CompanyAdmin(admin.ModelAdmin):
    raw_id_fields = ("cities",)

答案 1 :(得分:1)

23000其实"没有"对于数据库。

首先,你需要识别"罪魁祸首"减速,查询很慢。这是django-debug-toolbar可以帮助很多的地方。然后,您可以使用EXPLAIN手动运行查询,并查看可以改进的内容 - 例如,添加索引可能有所帮助。

另外,请考虑使用django-cache-machinejohnny-cache个包。

另见: