使用表单与包含外键的模型进行交互

问题描述 投票:0回答:1

所以我正在努力做一些非常简单的事情,但我一直在努力寻找看似年龄的东西而根本找不到自己的答案。

我正在尝试创建一个表单来添加一个devicetype。在那种形式中,应该是数据库中现有供应商的下拉菜单。唯一的问题是我似乎无法在表单中显示供应商的名称。而是显示实例名称。 “供应商对象(1)”,“供应商对象(2)”。如何更改它以显示名称?

这是我的模特:

class Vendors(models.Model):
    name = models.CharField(max_length=30)


class DeviceTypes(models.Model):
    name = models.CharField(max_length=30)
    vendor = models.ForeignKey(Vendors, on_delete=models.PROTECT)

这是我的形式:

class AddDeviceTypeForm(forms.ModelForm):
    """
    Form to add a devicetype to database
    """
    class Meta:
        model = DeviceTypes
        fields = ['name', 'vendor']

这是我的看法:

def addDeviceType(request):
    """
    view shows and processes form to add a device type
    """
    form = AddDeviceTypeForm()
    args = {
        'form': form
    }
    return render(request, 'cmdb/addDeviceType.html', args)

我正在显示表格:

<form action="" method="post">
    {% csrf_token %}
    {{form}}
    <input type="submit" value="Create" />
</form>
django django-forms
1个回答
2
投票

要显示供应商名称,您需要将__str__方法添加到供应商模型:

class Vendors(models.Model):
    name = models.CharField(max_length=30)
    def __str__(self):
        return self.name
© www.soinside.com 2019 - 2024. All rights reserved.