Поле выбора модели Django Как вернуть первичный ключ объекта вместо отображаемого значения - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь использовать поле выбора модели, которое предоставляет 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']

1 Ответ

0 голосов
/ 07 мая 2019

После долгих проблем я обнаружил, что вы можете сделать что-то подобное в представлении, чтобы получить значение идентификатора вместо значения str.

annual_income = form.cleaned_data['annual_income'].pk
...