django - 如何将 id 存储在数据库中,但在 Django 的 modelchoicefield 中显示名称?
问题描述
这是我在 forms.py 中的代码
manager_idd=forms.ModelChoiceField(label="Manager",widget=forms.Select(attrs={"class":"form-
control"}),queryset=Manager.objects.all().values_list('id','name',named=True)
我正在尝试在选择字段中显示名称,但想要获取所选名称的 id,因为这是数据库中的外键。我想将其保存为数据库中的 id,但在选择字段中显示为名称。我怎样才能做到这一点?
解决方案
manager_idd=forms.ModelChoiceField(label="Manager",widget=forms.Select(attrs={"class":"form-
control"}), queryset=Manager.objects.all().values_list('id','name',named=True))
在您的 中定义__str__()
要返回的方法,因此它将用作选择选项中的表示。self.name
Manager
class Manager(models.Model):
....
def __str__(self):
return self.name
# would yield
<select id="id_field1" name="field1">
<option value="obj1.pk">obj.name</option>
<option value="obj2.pk">obj.name</option>
...
</select>
__str__()
将调用模型的方法来生成对象的字符串表示形式,以供在字段的选择[ Doc]中使用。
推荐阅读
- pine-script - 在满足条件的第一个柱的收盘价上绘制一条线
- javascript - 如何使用 Vue-Form-Generator 正确浏览图像?(因为它对我不起作用)
- java - 当父类对象取子类对象的值时会发生什么
- python-3.x - 检查文件名是否在列表中
- git - Git:如何在同一个 repo 中管理多个相关项目?
- python - 如何获得 Pandas 每天的平均交货时间(存储为 timedelta64[ns])?
- node.js - 在 Apache 服务器上托管 HTTPS nodejs 服务器
- javascript - 如何为不同的页面使用相同的脚本文件?
- macos - Docker - 在本地磁盘上找不到模块说明符“...”
- python - 敌人被杀后继续射击