繁体   English   中英

Django ModelForm显示model外键字段代替object id

[英]Django ModelForm display model field of foreign key instead object id

我试图在我的模板中的 select 字段中显示 model 字段。 我正在使用在 select 字段中选择的外键。 问题是只显示了 object id。

我怎样才能让它显示我的外键的 model 字段(例如来自证书 model 的“crt_id”)而不是 object 和 id? (见图)

在此处输入图像描述

先感谢您

我的代码:

证书 model

class Certificate(models.Model):
    crt_id = models.CharField(max_length=60)
    crt_expire = models.DateTimeField()
    crt_active = models.BooleanField(default=False)

设备 model

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)

forms.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'
        ]

您需要定义 model 将返回的内容。

只需在设备 model 定义的末尾添加如下内容:

def __str__(self):
    return self.device_name

或者您希望退回的任何东西,或者在您的情况下,它将是:

def __str__(self):
    return self.device_certificate

并在证书 model 中执行相同的操作以指示它应该返回什么。

只需在您的国外参考 model 产品中添加 str function。

class Certificate(models.Model):
    crt_id = models.CharField(max_length=60)
    crt_expire = models.DateTimeField()
    crt_active = models.BooleanField(default=False)

  def __str__(self):
      return str(self.id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM