Django模型选择字段: Huge List of choices

标签 django django-forms

考虑这 3 种模型:

# models.py
class City(models.Model):
    name = models.CharField(max_length=50)

class Institute(models.Model):
    name = models.CharField(max_length=100)
    city = models.ForeignKey(City)

class Student(models.Model):
    name = models.CharField(max_length=60)
    roll = models.CharField(max_length=10)
    institute = models.ForeignKey(Institute)

现在我正在创建一个模型表单来添加/编辑学生,但我为用户提供了选择城市和学院的选项。所以基本上当用户选择城市时,相应的机构就会使用 JavaScript 显示

# forms.py
class StudentForm(forms.ModelForm):
    city = forms.ModelChoiceField(City)
    institute = forms.ModelChoiceField(queryset=Institute.objects.all())

class Meta:
    model = Student

但是机构的数量超过 3000 个。所以我想要的是将机构字段的选择保留为空白(因为一旦用户选择城市,它们将由 JavaScript 填充),但在提交数据后,我收到“选择有效选择”验证错误。有什么想法如何解决这个问题吗?

注意:当我没有指定选项(对于学院字段)时,网页大小为 300KB,当我指定选项时,网页大小为 1.1MB

最佳答案

显然,我必须重写 Choice 小部件并更改其渲染方法以不显示任何选项。由于仍然提供了 options 参数,因此不会发生验证错误,我可以自由地使用 javascript 按所选城市呈现机构。

关于Django模型选择字段: Huge List of choices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6906740/

相关文章:

python - 如何测试 View 是否装饰有 "login_required"(Django)

Django-celery 项目,如何处理结果后端的结果?

python - 如何获取特定模型的 id?

Django 管理员自动完成关闭

django - 基于用户过滤时如何迎合 'AnonymousUser'

Python - Django - 将参数传递给 Form Clean 方法

python - 在 Django 中保存 ModelForm 时,如何将用户模型作为ForeignKey 值传递?

python - Django - 同一表单上的多个自定义模型

python - 我们可以在 django 表单中为 ModelChoiceField 提供动态查询集吗?

django - 读取模板标签中的请求变量