

Django初心者ですが、仕事上在庫管理のシステムを組んでいます。

タイトルにもある通り、入力→確認画面→登録の順で組もうと考えています。

入力Formまでは組み終わったのですが、確認画面で嵌ってしまいました。

modelsでForeignKeyにてリレーションを行なっていますが、HTMLテンプレートに表示する際にリレー先のidしか表示できません。

・models.py

[code]

    class Storage_loca_996(models.Model):
    　 Company_Name = models.CharField( "社名" ,max_length=255) 
    
       def __str__(self):
           return self.Company_Name
    
    
    class wh_control_997(models.Model):
       Stock = models.IntegerField("在庫")
       Storage_Location = models.ForeignKey(
          'Storage_loca_996',
          on_delete=models.PROTECT,
          related_name='Storage_Location',
          verbose_name='保管場所',
          blank=True ,
          null=True ,
          ) 
    
[/code]

・forms.py

[code]

    class StockInfo(forms.ModelForm):
    
       class Meta:
          model = wh_control_997
          fields = "__all__"
    
      def __init__(self, *args, **kwargs):
          super().__init__(*args, **kwargs)
          for field in self.fields.values():
             field.widget.attrs["class"] = "form-control"
    
[/code]

・views.py

[code]

    class StockDataConfirm(LoginRequiredMixin,generic.FormView):
       form_class = StockInfo
    
       def form_valid(self, form):
          return render(self.request, 'growth/stock/confirm.html', {'form': form})
    
      def form_invalid(self, form):
          return render(self.request, 'growth/stock/create.html', {'form': form}}
    
[/code]

・HTML create.html

[code]

        <form action="{% url 'growth:stock_confirm' %}" method="POST">
      <td style="vertical-align: middle;width:200px;"><label for="{{ form.Stock.id_for_label.as_hidden }}">{{ form.Stock.label_ta.as_hiddeng }}</label></td>
      <input type="hidden" name="Stock" id="id_Stock" value=1>
    
    
     <table class="table">
       {{ form.non_field_errors }}
    
             <tr class="warning">
                 <td style="vertical-align: middle;width:200px;"><label for="{{ form.Storage_Location.id_for_label }}">{{ form.Storage_Location.label_tag }}</label></td>
                 <td>{{ form.Storage_Location }}{{ form.Storage_Location.errors }}
    
                 </td>
       </table>
    
     {% csrf_token %}
    <button type="submit" class="btn btn-outline-success btn-lg btn-block"> 登　　　録</button>
    </form>
    
[/code]

・HTML confirm.html

[code]

    {{ form.Stock.as_hidden }}
    <table class="table">
      <tbody>
        {% for field in form %}
         <tr>
          <td style='text-align: center;vertical-align: middle;width:250px;'><p for="{{ field.id_for_label }}">{{ field.label_tag }}</p></td>
          <td style='text-align: center;vertical-align: middle;'><p>{{ field.value }}</p></td>
        </tr>
    
        {% endfor %}
      </tbody>
    </table>
    <form action="{% url 'stock_create' %}" method="POST">
        <button type="submit" class="btn btn-outline-primary btn-lg btn-block">戻   る</button>
        {% for field in form %}{{ field.as_hidden }}{% endfor %}
        {% csrf_token %}
    </form>
    <br>
    <form action="{% url 'stock_data_create' %}" method="POST">
        <button type="submit" class="btn btn-outline-success btn-lg btn-block">登　　　録</button>
        {% for field in form %}{{ field.as_hidden }}{% endfor %}
        {% csrf_token %}
    </form>
    
[/code]

こんな感じで組んで見たのですが、入力画面はCompany_Nameで表示されるのですが、入力後の確認画面で、idになってしまいます。

1日中色々と試して見たのですが、なかなかできずモヤモヤしていたので、質問させていただきました。  
お忙しいところ大変もうしわけございませんが、よろしくお願いいたします。


CC BY-SA 4.0
2018-07-03T08:28:06.993
45263
2018-07-03T14:34:02.563
2018-07-03T14:34:02.563
26333
26333
question
django
Django でFormViewを使って入力→確認画面の流れを作っているのですが。。。