我是Django的新手,遇到了MultipleChoiceField的高POST请求时间问题。它有人员名单,我想显示地址列表,这些人住在那里的时间,但我的解决方案太慢了。
因此,如果我选择3个以上的人,加载时间变得非常大(4-5秒),但db查询只需0.5-0.7秒(如django-debug-toolbar所说),这就是为什么我没有创建任何索引(我会创造它们)。我认为长页面加载的问题是关于我的错误视图工作。同样在django-debug-toolbar的'Timer'面板中,大部分时间都需要“Request”部分。
我的models.py简化版:
pause
forms.py:
class Person(models.Model):
name = models.CharField(max_length=300)
class House(models.Model):
name = models.CharField(max_length=300)
persons = DictField() # stores {person_id: time_lived} - persons, who lived here
views.py:
class PersonListForm(forms.Form):
persons= forms.MultipleChoiceField(choices=
((person['id'], person['name'].lower()) for person in sorted(
Person.objects.all().values('id', 'name'), key=itemgetter('name'))),
label='Choice person list:'
)
我要求任何建议来优化我的应用程序,谢谢!
答案 0 :(得分:0)
首先,您可以使用sql进行排序,然后对于外壳,您可以使用css进行排序。
((person['id'], person['name'].lower()) for person in sorted(
Person.objects.all().values('id', 'name'), key=itemgetter('name'))),
BECOMES
forms.MultipleChoiceField(choices=Person.objects.order_by('name').values('id', 'name'))
With CSS:
.lowercase {
text-transform: lowercase;
}
对于表格保存部分,您可以发布人物和房屋的模型吗?