默认情况下,Django会将ForeignKey
字段显示为下拉菜单,其中所有的有效ForeignKeys
可供选择。相反,我想显示TextArea
并让用户自己输入值。这是怎么做到的?
在forms.py
中调整窗口小部件不足,因为Django仍然无法将TextArea
输入识别为有效对象。
答案 0 :(得分:2)
您应该将字段重新定义为CharField,并定义其clean_field方法以返回相关对象。因此,如果该字段被称为“other_model”并且是一个FK到OtherModel:
class MyForm(forms.ModelForm):
other_model = forms.CharField()
def clean_other_model(self):
value = self.cleaned_data['other_model']
try:
other_instance = OtherModel.objects.get(value_field=value)
except OtherModel.DoesNotExist:
raise forms.ValidationError('enter a valid value')
return other_instance