【发布时间】:2015-06-13 16:03:30
【问题描述】:
我有一个模型表格:
class FooForm(forms.ModelForm):
Meta:
model = Bar
fields = ('baz', 'description')
我的酒吧课是:
class Bar:
baz = models.ForeignKey(Baz)
description = models.CharField(max_length=100)
问题在于 Baz 类 有很多条目,而 django's documentation says 它使用 ModelChoiceField 来表示效率非常低的 baz 字段:
类 ModelChoiceField(**kwargs)
允许选择单个模型对象,适合表示外键。请注意,当条目数量增加时,ModelChoiceField 的默认小部件变得不切实际。您应该避免将其用于超过 100 个项目。
问题是我找不到避免使用它的方法。
换句话说,我想知道如何更改 Model field 到 Form field 之间的默认映射并使用另一个字段作为外键字段?
另外,在我的特殊情况下,我只想在我的 ModelForm 中 显示 baz 字段并被禁用,所以除了 ModelChoiceField 的低效率问题之外,它也不适合这种用法。
【问题讨论】:
-
您可以创建一个适合您需要的小部件类并将其链接到 ModelChoiceField
-
使用自定义小部件能解决问题吗?我的意思是它仍在使用 ModelChoiceField 和另一个 html representation。
-
我猜他们并不是说它效率不高,而是说从 100 多个项目中选择一个条目只是“不切实际”
-
@skndstry 在我看来,除了在输入时选择不切实际之外,它也效率低下,因为它确实从数据库中查询和选择所有对象
标签: python django django-models django-forms