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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用表单与包含外键的模型进行交互相关的知识,希望对你有一定的参考价值。

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

我正在尝试创建一个表单来添加一个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>
答案

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

class Vendors(models.Model):
    name = models.CharField(max_length=30)
    def __str__(self):
        return self.name

以上是关于使用表单与包含外键的模型进行交互的主要内容,如果未能解决你的问题,请参考以下文章

带有两个外键的 Django 保存表单

Django Createview根据外键的id保存表单并重定向到页面

如何使用具有外键的模型进行 Q 查询?

Django 和具有多个外键的模型

Python:如何在我的 Django 模板中传递外键的值?

将外键放入表单