2

我正在尝试使用 Django 提供的模型选择字段;但是,它的行为不像我预期的那样。

我希望最终用户的显示是来自我的模型的字符串值(有效),但在用户提交表单时返回模型的主键(而不是显示值)。我尝试在 Django 表单上使用 to_field_name="id" 并且在呈现 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 --')

模型.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

客户视图.py

annual_income = form.cleaned_data['annual_income']
4

1 回答 1

3

经过一番排查,我发现可以在视图中做这样的事情来获取ID值而不是str值。

annual_income = form.cleaned_data['annual_income'].pk
于 2019-05-06T21:05:25.093 回答