【问题标题】:Show values in dropdown list in Django在 Django 的下拉列表中显示值
【发布时间】:2017-11-09 21:50:18
【问题描述】:

我想在我的 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>

除了一个问题外,一切正常。现在我的设施有两个部分,例如“管”和“存储”。但如果我想在下拉列表中选择它们,我会在浏览器中看到以下变体:


零件对象
零件对象

我应该改变什么才能看到这样的零件名称



存储
?

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    您的模型中需要str() 方法。

    每当您在对象上调用 str() 时,都会调用 str() 方法。 Django 在很多地方都使用了 str(obj)。最值得注意的是,在 Django 管理站点中显示对象,并在显示对象时作为插入模板的值。因此,您应该始终从 str() 方法返回一个很好的、人类可读的模型表示。

    class Parts(models.Model):
        Name = models.CharField(max_length=50)
    
        # call to return name 
        def __str__(self):
            return self.Name
    

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 2020-12-23
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2014-08-09
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多