如何解决与父类别和子类别相关联的 Django mptt 渲染项目
我正在为病理学/实验室报告系统构建一个 django 应用程序。我需要一个表格,它可以为不同的测试(例如(HIV 阴性,一些测试 10))取值。由于有 100 和 1000 个测试,这些测试按化学测试、显微镜测试等类别分组。我需要为这些测试渲染一个带有表单的模板。我使用了 django-mptt 并且在 django admin 中构建结构似乎很容易,但我无法让它在前端模板中工作。以下是我的项目代码和描述。
class TestCategory(MPTTModel):
name = models.CharField(max_length=100)
parent = TreeForeignKey('self',on_delete=models.CASCADE,null=True,blank=True,related_name='children')
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_Now_add=True)
update_at = models.DateTimeField(auto_Now=True)
class Meta:
verbose_name_plural = "Test Categories"
class MPTTMeta:
order_insertion_by = ['name']
def __str__(self):
return self.name
class Test(models.Model):
QUALITATIVE = "1"
QUANTITATIVE = "0"
TEST_TYPE_CHOICES = [
(QUALITATIVE,'QUALITATIVE'),(QUANTITATIVE,'QUANTITATIVE'),]
test_category = TreeForeignKey(TestCategory,related_name='test_category')
name = models.CharField(max_length=50)
unit = models.CharField(max_length=10)
specimen = models.ForeignKey(Specimen,null=True)
test_type = models.CharField(max_length=2,choices=TEST_TYPE_CHOICES,default=QUALITATIVE)
reference_text = models.TextField()
price = models.DecimalField(max_digits=10,decimal_places=2,default=0,verbose_name='Price Per Unit')
is_active = models.BooleanField(default=True)
def __str__(self):
return self.name
class Meta:
ordering = ['test_category']
# views.py
def report_create_view(request,pk):
context ={}
form = CreateReportForm(request.POST or None)
if form.is_valid():
patient = self.objects.all().filter(patient_id=pk)
form.instance.patient_id = patient.patient_id
form.save()
context['form']= form
context['patient'] = Patient.objects.all().filter(pk=pk)
context['nodes'] = TestCategory.objects.all()
return render(request,"lab/report_form.html",context)
#template report_form.html
{% load crispy_forms_tags %}
{% load mptt_tags %}
<form method="post" novalidate>
{% csrf_token %}
{{ form|crispy }}
{% for node,structure in nodes|tree_info %}
{% if structure.new_level %}<ul><li>{% else %}</li><li>{% endif %}
{{ node.name }}
{% for level in structure.closed_levels %}</li></ul>{% endfor %}
{% endfor %}
<button type="submit" class="btn btn-success">Add Report</button>
</form>
这就是我的模板现在的样子。如您所见,我的表单只有类别名称(我得到的只有 TestCategory 模型节点实际的测试模型。如何实际呈现按类别分组的测试?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。