python - 带有外键查找的 Django 模板表单集
问题描述
希望对我在表单集中的模板中显示反向查找字段的以下问题提供一些指导。
维修项目型号
class Maintenance_Item(CommonInfo):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
name_description = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
def __str__(self):
return self.name
清单模型
class MaintenanceCheckList(CommonInfo):
CHOICES = (
('P','Compliant'),
('F','Non-Compliant'),
)
id = models.AutoField(primary_key=True)
item = models.ForeignKey(Maintenance_Item, on_delete=PROTECT, related_name='item_name')
is_compliant = models.CharField(max_length=20, choices= CHOICES, default=CHOICES[0][0])
def __int__(self):
return self.item
编辑表格
class MaintenanceCheckListComplianceForm(forms.ModelForm):
is_compliant = forms.ChoiceField(
choices=MaintenanceCheckList.CHOICES,
widget=forms.RadioSelect,
required=False,
)
class Meta:
model = MaintenanceCheckList
fields = ('item','is_compliant',)
END EDIT 当前模板
<form class="" method='post'>
{% csrf_token %}
{{ form.management_form }}
<table class="table my-0" id="dataTable">
<thead>
<tr>
<th>Maintenance Items</th>
</tr>
</thead>
<tbody>
{% for sub_form in form %}
<tr>
{% for i in sub_form.item_name.all %}
<td>Item: {{ i.name }}</p>
{% endfor %}
{{ sub_form.item|add_class:"form-select" }}<p>
</p>{{ sub_form.is_compliant }}</td>
</tr>
{% endfor %}
</table>
<div class="divider"></div>
<div class="col-md-12">
<p class='pt-sm-2'>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
目前,我有通用的表单集视图,它为 Maintenance_Item 中的每个项目创建一行,它工作得很好,并生成了如图所示的表单集视图。
我面临的挑战是我想隐藏 ModelChoice 字段(我可以使用 Widget 轻松做到这一点),并且只需将 ModelChoice 字段中的友好名称显示为模板中的简单文本标签。
注意设置禁用将不起作用,因为 POST 忽略禁用的字段(已使用该字段进行故障排除)
解决方案
推荐阅读
- angular - 身份服务器负载平衡失败。是因为我的 IdentityServer4 实现不保留刷新令牌吗?
- c# - 未能创建应用存档。这种类型的 CollectionView 不支持从不同于
- python - 无法在 python2 上安装 dlib
- objective-c - 如何向 Obj-C 项目添加额外的 .h 和 .m 文件
- python - 无法导入 category_encoders 模块
- php - 更改文件中的 JSON 输出格式?
- data-partitioning - 火花重新分区到每个客户的一个输出文件
- c++ - 使用鼠标左键变量单击并按住循环重复执行语句
- c - 没有得到除法和模数的输出
- c# - 如何禁用 datagridview 中的按钮?(只读属性不起作用)