Я пытаюсь использовать поле выбора модели, которое предоставляет Django; однако, это не ведет себя так, как я ожидал.
Я хочу, чтобы отображение для конечного пользователя было строковым значением из моей модели (что работает), но возвращаю первичный ключ модели, когда пользователь отправляет форму (а не значение отображения). Я попытался использовать to_field_name = "id" в форме Django, и она правильно отображает значения при рендеринге HTML, но когда пользователь отправляет форму, возвращаемое мной значение является отображаемым значением, а не первичным ключом, которым я являюсь ожидая.
customer_edit_form.py
annual_income = forms.ModelChoiceField(label='Annual income', to_field_name="id", queryset=cust_income_range.objects.all(), empty_label='-- None --')
models.py
# Annual Income Model
class cust_income_range(models.Model):
id = models.IntegerField(primary_key=True)
range = models.CharField(max_length=50)
def __str__(self):
return self.range
customer_view.py
annual_income = form.cleaned_data['annual_income']