我想在我的Django应用程序中添加有关我设施不同部分的文档。 所以,我的models.py中有以下模型:
class Parts(models.Model):
Name = models.CharField(max_length=50)
class Docs(models.Model):
Date = models.DateField(default=date.today)
Type = models.CharField(max_length=50)
Part = models.ForeignKey(Parts)
Link = models.FileField(upload_to='Docs/%Y/%m/%d')
forms.py:
class DocsForm(ModelForm):
class Meta:
model = Docs
fields = ['Date', 'Type', 'Part', 'Link']
class PartsForm(ModelForm):
class Meta:
model = Parts
fields = ['Name']
views.py:
def adddocs(request):
if request.method == 'POST':
f = DocsForm(request.POST, request.FILES)
if f.is_valid():
f.save()
return HttpResponseRedirect('')
else:
form = DocsForm()
return render(
request,
'adddocs.html',
{'form': form}
以及我模板中的以下片段:
<form action="{% url 'adddocs' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p> {{form.Date}} </p>
<p> {{form.Type}} </p>
<p> {{form.Part}} </p>
<p> {{form.Link}} </p>
<p><input type="submit" value="Add" /></p>
</form>
除了一个问题,一切正常。现在我有两个部分,例如'管'和'存储'。但是如果我想在下拉列表中选择它们,我会在浏览器中看到以下变体:
零件对象
零件对象
我应该更改什么来查看此类部分的名称
管
存储
?
答案 0 :(得分:2)
您需要在模型中使用str()方法。
只要在对象上调用str(),就会调用 str ()方法。 Django在很多地方使用str(obj)。最值得注意的是,在Django管理站点中显示一个对象,并在显示一个对象时将值插入到模板中。因此,您应该始终从 str ()方法返回一个漂亮的,人类可读的模型表示。
class Parts(models.Model):
Name = models.CharField(max_length=50)
__str__(self):
return self.Name