В Django форме не меняется значение виджета
Вот мой forms.py, тут моя форма наследует всё от модели, но один виджет у меня не стандартный (Select, а по стандарту TextInput должен быть). Есть функция, которая генерирует значения для него. Всё бы то ничего, только такое чувство, будто мой виджет принимает эти значения только один раз, и то при запуске сервера, т.к. эти значения не хотят меняться в процессе выполнения кода. Прикладываю все необходимые файлы.
forms.py
from django.forms import ModelForm, TextInput, Select, DateInput
from department.models.employee import Employee
from department import func
class EmployeeForm(ModelForm):
class Meta:
model = Employee
fields = ['name', 'dep', 'salary', 'position', 'date']
widgets = {
"name": TextInput(attrs={
'class': 'form-control',
'placeholder': 'Enter a name for employee... '
}),
"dep": Select(choices=func.dep_select(), attrs={
'class': 'form-control',
}),
"salary": TextInput(attrs={
'class': 'form-control',
'placeholder': 'Enter salary... '
}),
"position": TextInput(attrs={
'class': 'form-control',
'placeholder': 'Enter position... '
}),
"date": DateInput(attrs={
'class': 'form-control',
'placeholder': 'Enter a date...'
}),
}
views.py
def employee_add(request):
error = ''
form = EmployeeForm()
if request.method == "POST":
form = EmployeeForm(request.POST)
if form.is_valid():
form.save()
return redirect('employee_home')
else:
error = "Ошибка"
time = datetime.now().date()
data = {
'form': form,
'error': error,
'time': time,
}
return render(request, 'employee/employee_add.html', data)
models.py
from django.db import models
class Employee(models.Model):
name = models.CharField('Employee:', max_length=30)
dep = models.CharField('Department:', max_length=30)
salary = models.CharField('Salary:', max_length=30)
position = models.CharField('Position:', max_length=30)
date = models.DateField('Date:', max_length=30)
func.py
А вот функция, генерирующая список. Эта функция из другой модели получает значения и вносит их dep_set. Но почему-то значения не хотят меняться в процессе выполнения кода. Но я только не могу понять, где именно они не меняются, в этой функции или же сам виджет принимает значения только единожды при запуске сервера.
from department.models.department import Department
def dep_select():
dep_set = []
department = Department.objects.all()
for i in department:
a = (i, i)
dep_set.append(a)
return dep_set