Получение ошибки типа при передаче модели в теге select в Django

У меня есть модель Department, в ней есть данные College и HS, когда я пытаюсь сохранить форму, я всегда получаю TypeError. Я попытался проверить форму и обнаружил, что это форма unbound, поэтому я попытался изменить тип поля department с ChoiceField на CharField и в моих шаблонах я попытался вызвать {{form.department}} и это дает мне правильные данные, но все равно выдает TypeError.

views.py

class editProfile(UpdateView):
    model = Profile
    form_class = UpdateUserForm
    template_name = 'accounts/profile.html'
    success_url = reverse_lazy('homepage')

    #TypeError or ValueError
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['initial']=Profile.objects.get(user=self.request.user)
        context['department']=Department.objects.all()
        context['program']=Program.objects.all()
        context['year']=Year.objects.all()
        return context

    def form_valid(self, form):
        user = form.save(commit=False)
        user.username = form.cleaned_data.get('username')
        user.profile.department = form.cleaned_data.get('department')
        user.profile.program = form.cleaned_data.get('program')
        user.profile.year = form.cleaned_data.get('year')
        user.profile.save()
        user.save()

forms.py

class UpdateUserForm(forms.ModelForm):
    def __init__(self, *args, **kwargs) -> None:
        super(UpdateUserForm, self).__init__(*args, **kwargs)
        self.fields['username'].label = 'Username'
        self.fields['department'].label = 'Department'
        self.fields['program'].label = 'Program'
        self.fields['year'].label = 'Year'

    username = forms.CharField(widget=forms.TextInput(attrs={
        'class': 'form-control',
        'placeholder': 'Type your username'
    }))
    department = forms.CharField(widget=Select(attrs={
        'class': 'form-control'
    }))

    program = forms.CharField(widget=Select(attrs={
        'class': 'form-control',
    },
    ))
    year = forms.CharField(widget=Select(attrs={
        'class': 'form-control',
    },
    ))


    class Meta:
        model = User
        fields = ['department', 'program', 'year', 'username']

    

models.py

class Department(models.Model):
    department=[
        ('HS','Highschool Department'),
        ('College','College Department')
    ]

    name = models.CharField(_('Department'),max_length=50,choices=department)

    def __str__(self):
        return self.name


class Program(models.Model):
    programs = [
        ('Junior', 'Junior Highschool'),
        ('Senior', 'Senior Highschool'),
        ('IT', 'Information Technology'),
        ('P', 'Psychology'),
        ('SW', 'Social Work'),
        ('MT', 'Medical Technology'),
    ]

    name = models.CharField(_('Program'),max_length=50,choices=programs)
    department = models.ForeignKey(Department,on_delete=models.CASCADE)
    def __str__(self):
        return self.name

class Year(models.Model):
    year=[
        ('7','Grade 7'),
        ('8','Grade 8'),
        ('9','Grade 9'),
        ('10','Grade 10'),
        ('11','Grade 11'),
        ('12','Grade 12'),
        ('1st','1st Year'),
        ('2nd','2nd Year'),
        ('3rd','3rd Year'),
        ('4th','4th Year'),
        ('5th','5th Year'),
    ]

    name = models.CharField(_('Year'),max_length=10,choices=year)

    def __str__(self):
        return self.name

class Profile(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
    department = models.ForeignKey(Department,on_delete=models.SET_NULL,null=True)
    program= models.ForeignKey(Program,on_delete=models.SET_NULL,null=True)
    year= models.ForeignKey(Year,on_delete=models.SET_NULL,null=True)

    def __str__(self):
        return self.user.username

accounts/profile.html

 <form method="post">
            {% csrf_token %}
            <h3>Profile Details</h3>
            <input type="text" name="username" value="{{user.username}}"
                           placeholder="Type your username"
                           id="id_username" readonly>
            <select name="department" id="id_department">
                        <option value="">---------------------</option>
                        {% for dept in department %}
                        <option {% if initial.department == dept %} selected {% endif %} 
                        value="{{dept}}"> {{dept}}
                        </option>
                        {% endfor %}
             </select>
             <select name="program" class="form-select" id="id_program">
                        <option value="">---------------------</option>
                        {% for prog in program %}
                        <option {% if initial.program == prog %} selected {% endif %} 
                        value="{{prog}}">
                            {{prog}}
                        </option>
                        {% endfor %}
                    </select>
                    <select name="year" class="form-select" id="id_year">
                        <option value="">---------------------</option>
                        {% for yr in year%}
                        <option {% if initial.year == yr %} selected {% endif %}
                        value="{{yr}}">
                            {{yr}}
                        </option>
                        {% endfor %}
                    </select>
            <button type="submit">Update Profile</button>
  </form>

Вернуться на верх