У меня есть класс, который имеет IntegerField
атрибут.В его ModelForm
, в поле этого атрибута, мне нужно отправить строку, которая позже будет хранить целое число, как только оно будет обработано в представлении.Проблема в том, что Django не позволяет этого, и когда я использую form.cleaned_data.get('myattr')
, он говорит, что это неправильно, потому что это должно быть целое число.
class Student(models.Model):
teacher = models.IntegerField(null=False) # I'm saving teacher's key here
class Teacher(models.Model:
name = models.CharField(max_length= 50, null=False)
key = models.IntegerField(null=False)
class StudentForm(forms.ModelForm):
teacher = forms.ModelChoiceField(queryset=Teacher.objects.all(), label='Select the teacher')
Итак, когда пользователь выбирает учителя ученика,это поле выбора будет отображать имя доступных учителей.Но в модели он будет хранить их ключ, который я управляю в поле зрения.
views.py:
teacher = form.cleaned_data.get('teacher') # it has the name
teacher = Teacher.objects.get(name=teacher).key # getting the key in order to store an Integer, but Django is banning my code before anyway.
Как я могу справиться с этим, не меняя тип данных модели?
Я даже добавил to_field_name
в поле формы со значением ключа учителя.