python - 将 ReportLab Pdf 附加到模型
问题描述
登录后,我的用户填写了四个表单,并生成了一个包含表单数据的 pdf。我可以成功地做到这一点并保存 pdf,但不知道如何将生成的 pdf 附加给用户。我通常将表单数据保存if request.method == 'POST':
在 view.py 文件中的语句中,但 pdf 不是通过 POST 发送的,而是生成并保存在一个名为 after 的函数中,if request.method == 'POST':
所以我想我需要一种方法将其附加到用户 pdf 模型在那个函数中?
另外,问卷很大,所以我把它分成四个单独的表格和四个单独的模型,每个模型都与用户一对一的关系。这是一种好的做法,还是我应该创建一个大型模型并使用四个单独的表格将其分解?
实用程序.py
def generate_questionnaire_pdf(request):
# get user
user = request.user
# create pdf
pdf = SimpleDocTemplate(settings.MEDIA_ROOT+'\pdfs\\questionnaire_pdfs\\user_%s.pdf' %user.id)
[..cont..]
pdf.build(elems, onFirstPage=partial(pageSetup, title=title, user=user), onLaterPages=pageSetup)
表格.py
class QuestionnairePdfForm(forms.ModelForm):
class Meta:
model = QuestionnairePdf
fields = ['questionnaire_pdf']
模型.py
class QuestionnairePdf(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
questionnaire_pdf = models.FileField(upload_to='pdfs\\questionnaire_pdfs')
视图.py
def final_question(request):
if request.method == 'POST':
form = FinalQuestionForm(request.POST, request.FILES, instance=request.user.finalquestion)
if form.is_valid():
form.save()
# generate pdf containing all answers to questionnaire
utils.generate_questionnaire_pdf(request)
谢谢你。
解决方案
推荐阅读
- r - 在 lm 公式中删除变量仍会触发对比度错误
- windows - Windows 中的低完整性和受限进程有什么区别?
- javascript - 尝试在 Next.JS 上导入 Bootstrap,但显示“TypeError:无法读取未定义的属性 'jquery'”
- python - Python、Bottle、MongoDB 创建函数 500 错误代码
- python - 如何在轮盘游戏中使用列表?
- javascript - 我无法在 Node 中使用 Promise 读取流
- android - 如何在不关闭弹出活动的情况下将数据从弹出活动传递到父活动?
- angular - HammerJS 滑动不适用于具有溢出 css 属性的元素
- java - 不知道怎么加税
- flutter - 如何在 Flutter 中渲染网站的部分内容?