在CreateView中将Django ForeignKey显示为Textarea

时间:2018-06-12 11:17:02

标签: python django

默认情况下,Django会将ForeignKey字段显示为下拉菜单,其中所有的有效ForeignKeys可供选择。相反,我想显示TextArea并让用户自己输入值。这是怎么做到的?

forms.py中调整窗口小部件不足,因为Django仍然无法将TextArea输入识别为有效对象。

1 个答案:

答案 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