我有一个名为model
的Title
,其中包含一些ForeignKey
字段:
class Title(models.Model):
name = models.CharField(max_length=120)
department = models.ForeignKey('Department')
rank = models.ForeignKey('Title_rank')
我有一个form
,它的参数choices
设置为所有Title
项:
class Emp_titleForm(forms.Form):
title = forms.MultipleChoiceField(
choices=( (x.id, x.department.name + " - " + x.name) for x in Titles.objects.all() ),
widget=forms.SelectMultiple(),
required=True,
)
页面加载很好,但是速度很慢(~6-10秒),因为Title
类中有很多对象(目前约5000个)。你知道吗
有没有调整我的form
或model
来加速页面加载?不幸的是,过滤以减少选择并不是一种选择。另外,请注意,我想显示带有title
的department
(例如:“Dept-Title”)
解决这个问题的标准Django方法(不依赖于版本)是在Title模型中创建一个属性:
然后可以在表单中直接引用它。祝你好运。你知道吗
更新
如注释中所述,不能对模型属性执行查找。首先需要使用save()方法将此字段添加到模型中,然后可以执行筛选:
不要在所有
Title
对象上循环,请尝试更有效的查询:编辑:
要组合字段,假设您使用的是Django 1.8+,可以执行以下操作:
相关问题 更多 >
编程相关推荐