python - 如何在不同的视图和模板之间拆分模型类的字段以获取不同形式的输入?
问题描述
我的models.py中有一个名为“ Client ”的类,它有不同的字段,如(名称、dob .. 等)。我在views.py中有一个名为“ ClientCreateView ”的视图,我在其中输入 Client 类的某些字段(不是所有字段)。这个模板叫做' 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 ”:
addinstallment.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 '。
有谁知道如何解决这个问题。
解决方案
默认情况下,django 使用 (modelname_form.html) 查找模板名称
由于您的模型是两个视图都在寻找“client_form.html”,您应该通过添加更改 AddInstallmentView 中的模板名称
template_name = "path/addinstallment.html"
推荐阅读
- c# - 在 Linux 上运行 .net 核心自包含可执行文件的 glibc 错误
- php - 我正在尝试跳过“Google Drive 无法扫描此文件中的病毒”并直接生成下载链接
- excel - 使用 2 个变量嵌入循环
- python - 我错过了什么?API Python 问题
- firebase - Firebase messages.getToken() 失败并出现 MISSING_INSTANCEID_SERVICE 错误
- python - 如何使用python在已经找到的另一个单元格旁边的excel单元格中查找值?
- javascript - 检测数字输入的箭头已被点击 React
- c# - ASP.NET MVC 表单提交不起作用:没有错误
- r - R 中的 Web Scraping (rvest, RSelenium):如何在需要 SSL 证书的网站中进行身份验证
- node.js - 如何获取 npm 包所有者的电子邮件地址?