Django でFormViewを使って入力→確認画面の流れを作っているのですが。。。
Django初心者ですが、仕事上在庫管理のシステムを組んでいます。
タイトルにもある通り、入力→確認画面→登録の順で組もうと考えています。
入力Formまでは組み終わったのですが、確認画面で嵌ってしまいました。
modelsでForeignKeyにてリレーションを行なっていますが、HTMLテンプレートに表示する際にリレー先のidしか表示できません。
・models.py
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 ,
)
・forms.py
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"
・views.py
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}}
・HTML create.html
<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>
・HTML confirm.html
{{ 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>
こんな感じで組んで見たのですが、入力画面はCompany_Nameで表示されるのですが、入力後の確認画面で、idになってしまいます。
1日中色々と試して見たのですが、なかなかできずモヤモヤしていたので、質問させていただきました。
お忙しいところ大変もうしわけございませんが、よろしくお願いいたします。