2017-11-09 28 views
-1

自分のDjangoアプリケーションで私の施設のさまざまな部分についてのドキュメントを追加したいと思います。 だから、私は私のmodels.pyで、次のモデルがあります:Djangoのドロップダウンリストに値を表示

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> 

1つの問題以外は非常にうまく動作します。今私は私の施設の2つの部分、例えば「チューブ」と「保管」を持っています。しかし、私は、ドロップダウンリストでそれらを選択する場合、私は私のブラウザで次のバリアントを参照してください。


部品
部品オブジェクト私はこのような部品の名前を確認するために変更する必要がありますどのような

をオブジェクト


チューブ
ストレージ

答えて

0

モデルにはstr()メソッドが必要です。

str()メソッドは、オブジェクトに対してstr()を呼び出すたびに呼び出されます。 Djangoはstr(obj)をいくつかの場所で使います。特に、Django管理サイトにオブジェクトを表示し、オブジェクトを表示するときにテンプレートに挿入する値として指定します。したがって、str()メソッドから、人間が読める形式のモデルを返すべきです。

class Parts(models.Model): 
    Name = models.CharField(max_length=50) 

    __str__(self): 
     return self.Name 
関連する問題