Django模型选择字段如何返回对象的主键而不是显示值

时间:2019-05-06 02:49:45

标签: python django modelchoicefield

我正在尝试使用Django提供的modelchoicefield;但是,它的行为方式不符合我的预期。

我希望显示给最终用户的是我模型的字符串值(有效),但是当用户提交表单时返回模型的主键(而不是显示值)。我尝试在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 --')

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 :(得分:0)

经过很多麻烦之后,我发现您可以在视图中执行类似的操作来获取ID值而不是str值。

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