python - Django ModelForm 显示模型字段的外键而不是对象 id
问题描述
我正在尝试在模板的选择字段中显示模型字段。我正在使用在选择字段中选择的外键。问题是只显示对象 ID。
如何让它显示我的外键的模型字段(例如证书模型中的“crt_id”)而不是对象和 id?(见图)
先感谢您
我的代码:
证书模型
class Certificate(models.Model):
crt_id = models.CharField(max_length=60)
crt_expire = models.DateTimeField()
crt_active = models.BooleanField(default=False)
设备型号
class Device(models.Model):
device_name = models.CharField(max_length=64)
device_group = models.CharField(max_length=64)
device_certificate = models.ForeignKey(Certificate, models.SET_NULL, blank=True, null=True)
表格.py
class DeviceForm(forms.ModelForm):
device_group = forms.CharField(required=False)
device_name = forms.CharField(required=True)
class Meta:
model = Device
fields = [
'device_name',
'device_group',
'device_certificate'
]
解决方案
您需要定义模型将返回的内容。
只需在设备模型定义的末尾添加如下内容:
def __str__(self):
return self.device_name
或者您希望退回的任何东西,或者在您的情况下,它将是:
def __str__(self):
return self.device_certificate
并在证书模型中执行相同的操作以指示它应该返回什么。
一种流行的做法是像这样组合多个字段:
def __str__(self):
return self.device_name + ' (' + self.device_certificate + ')'
或您需要的任何其他组合。
推荐阅读
- python - 如何通过 xlwings 在第一个空行上写?
- r - How do I get my loop on pdf_text only to read all the files?
- php - 列表的每个元素上的弹出模式
- haskell - 镜头设置器类似于“单面”镜头吸气剂?
- jquery - 用列中的数据填充 DataTables 按钮
- javascript - 如何使用 Jquery 从用户输入中制作表格内容?
- python-3.7 - 字典有序键
- java - 我如何在这里模拟最终的内部类
- eigen - 了解 Eigen 中的 solveInPlace 操作
- tensorflow - 为什么环境变量 TF_CUDA_COMPUTE_CAPABILITIES 可以设置多值?