python - Django Model Choice Field 如何返回对象的主键而不是显示值

标签 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 --')

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

最佳答案

经过大量故障排除后,我发现您可以在 View 中执行类似的操作来获取 ID 值而不是字符串值。

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

关于python - Django Model Choice Field 如何返回对象的主键而不是显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55998218/

相关文章:

django - 显示除 __str__ 以外的字段

python - Django - 如何更改 forms.ModelChoiceField 的值

python - Pandas 函数基于单列创建多列

python - Pandas - 如何替换单引号后跟逗号(“,)

python - uWSGI找不到所有Python安装中都存在的模块

python - 将 "django-admin.py"路径添加到 Windows 7 上的命令行

javascript - Django,想要加载一个网站然后更新它

key 存在时出现 Django Session KeyError

django - 如何在 django 中启用 SSL 电子邮件?

django - 自定义标签,例如使用 django-filter