我正在为病理学/实验室报告系统构建django应用程序。我需要一个表格,将采取不同的测试值,如(艾滋病毒阴性,一些测试-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, on_delete=models.CASCADE, related_name='test_category')
name = models.CharField(max_length=50)
unit = models.CharField(max_length=10)
specimen = models.ForeignKey(Specimen, on_delete=models.CASCADE, blank=True, 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, blank=True, 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>
这就是我的模板现在的外观。正如您所看到的,我的表单只有categories名称(我得到的是testcategority model only节点)和实际的测试模型。如何实际呈现按类别分组的测试
目前没有回答
相关问题 更多 >
编程相关推荐