首页 > 解决方案 > 另一个数据库字段的外键的 Django 下拉字段

问题描述

我是 Django 初学者,在使用引导下拉菜单进行外键使用时遇到问题。

我有一个用于为我的采购网站添加提供商(供应商、制造商或两者)的输入表单,该表单具有以下数据结构:

class Provider(models.Model):
    provider_id = models.AutoField(primary_key=True)
    provider_name = models.CharField(max_length=255, unique=True)
    provider_address = models.CharField(max_length=255, null=True, blank=True)
    provider_email = models.EmailField(null=True, blank=True)
    provider_contact_01 = models.CharField(max_length=20, null=True, blank=True)
    provider_contact_02 = models.CharField(max_length=20, null=True, blank=True)
    provider_type = models.ForeignKey(ProviderType, on_delete=models.CASCADE)

其中 provider_type 是表 ProviderType 的外键,具有以下数据结构:

class ProviderType(models.Model):
    providertype_id = models.AutoField(primary_key=True)
    providertype_desc = models.CharField(max_length=50, null=True, blank=True)

    def __str__(self):
        return self.providertype_desc

ProviderType 的数据集:

| providertype_id |    providertype_desc    |
---------------------------------------------
|       1         |         Supplier        |
|       2         |       Manufacturer      |
|       3         | Supplier & Manufacturer |

问题是我在下拉字段中使用了providertype_desc作为文本,因为它对用户更友好并且有上下文,而不是providertype_Id,html中的代码段:

<div class="form-group col-md-6">
  <label for="provider_type">Type of Provider</label>
  <select class="custom-select" id="provider_type" name="provider_type" aria-label="Example select with button addon">
    <option selected>Choose...</option>
    {% for prov_types in provider_types %}
      <option>{{prov_types.providertype_desc}}</option>
    {% endfor %}
  </select>
</div>

但是 POST 序列失败,因为需要返回 providertype_id 而不是 providertype_desc。

寻找建议,请尽量保持简单,因为我还是 Django 的初学者。

谢谢你。

标签: django

解决方案


这确实是一个 HTML 问题,您想在value选项中添加一个:

<option value="{{prov_types.pk}}>{{prov_types.providertype_desc}}</option>

推荐阅读