我试图提供使用2套夹具的初始数据。第一个灯具格式看起来像这样。Django夹具加载非常缓慢
{
"pk": 1,
"model": "data.Person",
"fields": {
"full": "Anna-Varney",
"num": "I",
"short": "Anna-Varney"
}
},
而我首先加载它,并在大约1-2小时内加载罚款。我movie.json格式如下:
{
"pk": 1,
"model": "data.Film",
"fields": {
"date": "2005-08-01",
"rating": 8.3,
"actors": [
[
"Anna-Varney"
]
],
"name": "Like a Corpse Standing in Desperation (2005) (V)"
}
},
和装载在迈出了非常长的时间看电影夹具,这是目前20个小时,并在运行时我的电脑是缓慢的。我在2个月前加载了类似的灯具,除了我使用了MySQL(我现在使用Postgres)以及我在模型中添加了日期字段。在过去将电影装置加载到旧的MySQL数据库中时,只需要2-3个小时。有没有办法确定夹具加载部件在哪一步或者是否已冻结?
仅供参考我的车型有:
class PersonManager(models.Manager):
def get_by_natural_key(self, full):
return self.get(full=full)
class Person(models.Model):
objects = PersonManager()
full = models.CharField(max_length=100,unique = True)
short = models.CharField(max_length=100)
num = models.CharField(max_length=5)
def natural_key(self):
return (self.full,)
def __unicode__(self):
return self.full
class Film(models.Model):
name = models.TextField()
date = models.DateField()
rating = models.DecimalField(max_digits=3 , decimal_places=1)
actors = models.ManyToManyField('Person')
def __unicode__(self):
return self.name
我想尝试的第一件事是在'full'上创建一个索引。自然键处理必须为每部电影找到正确的'Person'实例,所以它会反复搜索'full'。 –
好的,我会尝试。如果我的应用大量使用Twitter的typeahead.js和一个调用istartswith的视图,我是否也应该将这个short做索引? – dl8
我不确定 - 这取决于'istartswith'查询发送到Postgres的方式。 –