我不知道如何获取数据并填充到我的word模板中。它实际上是一个很长的列表,我需要在word文档中的表格中填充它。我做得对吗?下面是我的代码:
- 查看次数.py*
def save_sample_details(request):
sample = SampleList.objects.all()
doc = DocxTemplate("lab_management/word/sample_template.docx")
context = {
'SNAME' : sample.sample_name,
'STYPE' : sample.sample_type,
'HVER' : sample.hardware_version,
'SVER' : sample.software_version,
'CS' : sample.config_status,
'NUM' : sample.number,
'SNUM' : sample.sample_number,
}
doc.render(context)
doc.save('lab_management/word/sample.docx')
return redirect('/lab/sample/details/')
- 模型.py*
class SampleList(models.Model):
sample_name = models.CharField(max_length=32)
sample_type = models.CharField(max_length=32)
hardware_version = models.CharField(max_length=32)
software_version = models.CharField(max_length=32)
config_status = models.CharField(max_length=18)
number = models.IntegerField(default=0)
sample_number = models.CharField(max_length=17)
因此,如果我运行此命令,它会显示 “QuerySet”对象没有属性“sample_name” 等。
3条答案
按热度按时间tkclm6bt1#
当你调用
SampleList.objects.all()
时,你会得到所有的SampleList
对象,所以这是返回一个QuerySet
,其中包含零个或多个对象,而不是你想要的单个对象。相反,您应该获取所需的单个
SampleList
对象:例如sample = SampleList.objects.get(id=1)
或另一个示例-要获取QuerySet
中的第一个对象,可以执行sample = SampleList.objects.all()[0]
(但如果QuerySet
为空,则会出现索引错误)。您没有指定如何确定要将哪个SampleList放入Word文档中,但可以在.get()
属性中指定任何筛选器。Django有一些关于查询集的文档:https://docs.djangoproject.com/en/4.1/ref/models/querysets/
fjaof16o2#
将代码更改为:
您还应该在文档中的
context_list
中进行迭代。(假设您使用的是
docxtpl
库)xt0899hw3#
我已经回答了我的问题。谢谢你的帮助!