O Django admin altera a carga do formulário bem devagar
Um dos meus sites do Django tem os seguintes modelos de banco de dados: No Django App “common”:
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)
No Django App “sitcom”:
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)
Em suma, a classe de modelo Relation possui 3 chaves estrangeiras para outras tabelas. O problema é que, quando eu uso o Django Admin para mudar uma única relação, a página (change_form) é carregada bem devagar. Mais tarde, mudei a classe de modelo Relation da seguinte forma:
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)
A modificação mudou as Chaves Estrangeiras para IntegerFields, então desativou alguns dos magics dentro do sistema Django ORM, e agora a página do formulário de mudança carrega muito rápido. Minha pergunta é: o que são as “magias deficientes dentro do django orm”? Qual o potencial para causar o problema?