У меня есть форма Django, в которой у меня есть несколько раскрывающихся меню, в которых есть возможность ввести пользовательское значение. Чтобы ввести пользовательское значение, я использую следующую реализацию, чтобы переключать текстовое поле всякий раз, когда пользовательское значение выбирается из этой реализации http://jsfiddle.net/6nq7w/4/
Всякий раз, когда я выбираю параметр из раскрывающегося списка и сохраняюформа, значение объекта модели (в данном случае это EmployeeInformation.dept
) сохраняет выбранное значение, но это не тот случай, если я ввожу пользовательское значение.
В приведенном ниже примере я использую цепочкуреализация раскрывающегося списка для загрузки отдела на основе идентификатора отдела.
Например - Допустим, при заполнении формы я выбираю значение Продажи , а затем значение EmployeeInformation.dept = Sales
, тогда как при выбореопцию как Enter Manually
и введите новое значение, скажем DeptXYZ
объект модели Django не принимает это введенное вручную значение в качестве данных для поля Dept.
models.py
class EmployeeInformation(models.Model):
name = models.Charfield(max_length=30,null=False, blank=False)
dept_id = models.ForeignKey(DepartmentInformation, on_delete=models.SET_NULL, null=True)
dept = models.ForeignKey(SubDeptInformation, on_delete=models.SET_NULL, null=True)
salary = models.DecimalField(null=True, blank=True, decimal_places=2, max_digits=10)
form.html
<!DOCTYPE html>
<html>
<script>
function toggleField(hideObj,showObj){
hideObj.disabled=true;
hideObj.style.display='none';
showObj.disabled=false;
showObj.style.display='inline';
showObj.focus();
}
</script>
<body>
<form name="EmployeeInformation" action="#">
Department: <select name="browser"
onchange="if(this.options[this.selectedIndex].value=='Enter Manually'){
toggleField(this,this.nextSibling);
this.selectedIndex='0';
}">
<option></option>
<option value="Enter Manually">[Enter Manually]</option>
<option>HR</option>
<option>Sales</option>
<option>Finance</option>
</select><input name="Dept" style="display:none;" disabled="disabled"
onblur="if(this.value==''){toggleField(this,this.previousSibling);}">
<input type="submit" value="Submit">
</form>
</body>
</html>
views.py
class AddEmployeeInfo(CreateView):
model = EmployeeInformation
form_class = EmployeeForm
template_name = 'form.html'
success_url = reverse_lazy('employee_list')
Как сохранить введенное вручную значение в качестве значения поля объекта модели, т. Е. В моем example EmployeeInformation.dept.name
Спасибо за любую помощь заранее !!