考虑这 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/