从表格而不是从数据库报告实验室打印值

问题描述 投票:0回答:1

我有一个网站,用户必须在这四个网站(和四个表格)上填写一份大型问卷,填写问卷后,reportlab会生成其答案的pdf。

这是我的工作代码

utils.py

def generate_pdf(request):
    # get user
    user = request.user

    # get users age
    born = request.user.personalinformation.dob
    age = user_utils.get_age(born)

    doc = SimpleDocTemplate(settings.MEDIA_ROOT+'\pdf_templates\\enrolment_form_%s.pdf' %user.id)
    styles = getSampleStyleSheet()
    enrolment_form = [Spacer(1,2*inch)]
    style = styles["Normal"]

    page_contents = [
    ("Name: %s %s" % (user.personalinformation.first_name, user.personalinformation.surname)),
    ("Gender: %s" % (user.personalinformation.gender)),
    ("Age: %s" % (age))
    ]

    for sections in page_contents:
        p = Paragraph(sections, style)
        enrolment_form.append(p)
        enrolment_form.append(Spacer(1,0.2*inch))

    doc.build(enrolment_form)

models.py

class PersonalInformation(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    GENDERS = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    first_name = models.CharField(max_length=200, default='')
    surname = models.CharField(max_length=200, default='')
    gender = models.CharField(max_length=1, choices=GENDERS)
    dob = models.DateTimeField('Date of birth (mm/dd/yyyy)', null=True, default=now)

    def __str__(self):
        return f'{self.user.username}'

((我也有一个form.py,但认为它不值得包括)

这很好,除了“性别”之类的字段。因为它获取值,所以从数据库的user.personalinformation信息将其打印在pdf上,而不是打印“性别:男性”,而是打印“性别:M”。尽管此示例看起来很简单,但是还有更多具有键/值对和布尔值的字段,这种方式打印毫无意义。

我如何打印在表单中显示给用户的值,而不是打印保存在数据库中的值?

谢谢。

django django-forms reportlab django-database
1个回答
0
投票

您必须使用get_FOO_display()函数来获取所记录的值

© www.soinside.com 2019 - 2024. All rights reserved.