使用表单与包含外键的模型进行交互
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 Createview根据外键的id保存表单并重定向到页面