【发布时间】:2013-05-21 06:08:19
【问题描述】:
我的一个 Django 网站具有以下数据库模型: 在 Django App 中“常见”:
class Collection(models.Model):
name = models.CharField(max_length = 255, unique = True)
_short_name = models.CharField(db_column="short_name", max_length = 32, blank=True)
class Particle(models.Model):
content = models.TextField(blank=False)
owner = models.ForeignKey(Collection)
order = models.IntegerField(null=True, blank=True)
在 Django 应用“情景喜剧”中:
class Media(models.Model):
name = models.CharField(max_length = 248)
_short_name = models.CharField(db_column="short_name", max_length = 32, blank=True)
capital = models.CharField(max_length = 1)
description = models.TextField(blank=True)
progress = models.CharField(max_length = 32, blank=True, null=True)
class Relation(models.Model):
name = models.CharField(max_length = 128)
_short_name = models.CharField(db_column="short_name", max_length = 32, blank=True)
description = models.TextField(blank=True)
parent = models.ForeignKey('self', blank=True, null=True)
order = models.IntegerField(blank=True, null=True)
particle = models.ForeignKey(Particle, blank=True, null=True)
media = models.ForeignKey(Media, blank=True, null=True)
简而言之,模型类 Relation 对其他表有 3 个外键。 问题是,当我使用 Django Admin 更改单个关系时,页面 (change_form) 加载速度相当慢。 后来,我将模型类 Relation 更改为:
class Relation(models.Model):
name = models.CharField(max_length = 128)
_short_name = models.CharField(db_column="short_name", max_length = 32, blank=True)
description = models.TextField(blank=True)
order = models.IntegerField(blank=True, null=True)
parent_id = models.IntegerField(blank=True, null=True)
particle_id = models.IntegerField(blank=True, null=True)
media_id = models.IntegerField(blank=True, null=True)
修改将外键更改为 IntegerFields,因此它禁用了 Django ORM 系统内部的一些魔法,现在更改表单页面加载速度非常快。 我的问题是,“django orm 中的禁用魔法”是什么?什么可能导致问题?
【问题讨论】:
标签: python django performance django-models django-admin