[英]How to split fields of model class between different views and templates to take inputs in different forms?
我的models.py中有一個名為“ Client ”的 class,它有不同的字段,如(姓名、出生日期等)。 我在views.py中有一個名為“ ClientCreateView ”的視圖,我在其中輸入了客戶端class 的某些字段(不是所有字段)。 這個模板叫做' client_form.html '。
相關文件如下:
模型.py:
class Client(models.Model):
name = models.CharField(max_length = 100)
dob = models.SlugField(max_length = 100)
CNIC = models.SlugField(max_length = 100)
property_type = models.CharField(max_length = 100)
down_payment = models.IntegerField()
date_posted = models.DateTimeField(default=timezone.now)
installment_month = models.CharField(max_length = 100)
installment_amount = models.IntegerField(default = 0)
視圖.py:
class ClientCreateView(CreateView):
model = Client
fields = ['name', 'dob', 'CNIC', 'property_type', 'down_payment']
class AddInstallmentView(CreateView):
model = Client
fields = ['installment_month', 'installment_amount']
client_form.html
{% extends "property_details/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content_section">
<form method="post">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4"> Add New Client</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Add Client</button>
</div>
</form>
</div>
{% endblock %}
現在,正如您所見,我在views.py中的前五個字段(名稱、dob、CNIC、property_type、down_payment)中輸入了內容,因為這些是將新客戶端添加到我的數據庫所需的唯一字段。
將客戶端添加到數據庫后。 我想為添加的客戶添加分期付款。 所以我創建了一個名為“ AddInstallmentView ”的新視圖(參見上面的views.py)
並且 html 表格是' addinstallment_form.html ',如下所示:
添加安裝。html
{% extends "property_details/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content_section">
<form method="post">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4"> Add New Installment</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Add Installment</button>
</div>
</form>
</div>
{% endblock %}
現在,當我運行服務器並嘗試添加客戶端時。 有用!
但是當我嘗試向客戶端添加分期付款時。 我看到包含兩個字段(分期付款,分期付款)的表格。 但我看到的圖例是“添加新客戶端”,實際上是“ client_form.html ”中的圖例(見上文),提交按鈕也來自“ client_form.html ”,即“添加客戶端”,但是圖例應為“添加新分期付款”,提交按鈕應為“添加分期付款”。
好像我只有AddInstallmentView的字段,但模板仍然是' client_form.hmtl '。
有誰知道如何解決這個問題。
由於您的模型是兩個視圖都在尋找“client_form.html”,您應該通過添加更改 AddInstallmentView 中的模板名稱
template_name = "path/addinstallment.html"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.