小编Via*_*ech的帖子

Pytest 连接到测试数据库时出错

我遇到了在运行 pytest 之前从未见过的奇怪错误,我正在运行测试,并且几乎所有错误都由于不允许访问数据库而出错。

这是上周没有发生的新错误,因此它不是本地代码更改,但我不确定到底发生了什么。

有人能指出我正确的方向吗?

这是错误:

conftest.py:52: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.8/site-packages/django/db/models/query.py:287: in __iter__
    self._fetch_all()
/usr/local/lib/python3.8/site-packages/cacheops/query.py:271: in _fetch_all
    return self._no_monkey._fetch_all(self)
/usr/local/lib/python3.8/site-packages/django/db/models/query.py:1308: in _fetch_all
    self._result_cache = list(self._iterable_class(self))
/usr/local/lib/python3.8/site-packages/django/db/models/query.py:53: in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
/usr/local/lib/python3.8/site-packages/django/db/models/sql/compiler.py:1154: in execute_sql
    cursor = self.connection.cursor()
_ _ _ _ _ …
Run Code Online (Sandbox Code Playgroud)

python django pytest pytest-django

5
推荐指数
1
解决办法
4035
查看次数

表单字段的 Python Django PDF 扁平化

我有一个项目,我需要填写预制的 PDF,我想到的最合乎逻辑的解决方案是将预制的 PDF 制作成 PDF 表单,以便输入值应该放在标签中,然后我可以查看 PDF 中的表单标签,并将它们与值字典对齐。

我已经使用PyPDF2完成了这项工作。总的来说,我拍了一张网络表单的图像,然后打开 Acrobat 并根据图像中看到的字段创建了一个 PDF 表单,然后使用PyPDF2来填写 PDF 表单字段,但需要注意的是打印那些填写的值似乎在某些浏览器中存在问题,Firefox 就是其中之一。

我如何将我的 PDF 表单转换为标准/平面 PDF 以便我可以保留预先填充的值,但会丢失可编辑的字段(因为我认为这是问题所在)?

from io import BytesIO

import PyPDF2
from django.http import HttpResponse

from PyPDF2.generic import BooleanObject, NameObject, IndirectObject


def pdf_view(request):
    template = 'templates/template.pdf'

    outfile = "templates/test.pdf"

    input_stream = open(template, "rb")
    pdf_reader = PyPDF2.PdfFileReader(input_stream, strict=False)
    if "/AcroForm" in pdf_reader.trailer["/Root"]:
        pdf_reader.trailer["/Root"]["/AcroForm"].update(
            {NameObject("/NeedAppearances"): BooleanObject(True)})

    pdf_writer = PyPDF2.PdfFileWriter()
    set_need_appearances_writer(pdf_writer)
    if "/AcroForm" in pdf_writer._root_object:
        # Acro form is form field, …
Run Code Online (Sandbox Code Playgroud)

python pdf django pdfrw pypdf2

3
推荐指数
1
解决办法
2513
查看次数

由于 from_db_value() 导致 Django 3 对象评估错误

我正在尝试将项目更新到 Django 3,但在评估对象时遇到了一个奇怪的错误,指出:

TypeError: from_db_value() missing 1 required positional argument: 'context'

我在这里阅读 Django 文档:https://docs.djangoproject.com/en/3.0/releases/3.0/#features-removed-in-3-0

删除了对 Field.from_db_value() 和 Expression.convert_value() 上下文参数的支持。

但我不明白我需要做什么来解决这个问题,因为我的电话只是为了得到错误......

apps = Application.objects.filter(completed=False, canceled=False)
for app in apps:
    print(app)
Run Code Online (Sandbox Code Playgroud)

有什么我没有得到的吗?

这是完整的回溯,它似乎没有给我任何帮助

Traceback (most recent call last):
web_1       |   File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
web_1       |     response = get_response(request)
web_1       |   File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
web_1       |     response = self.process_exception_by_middleware(e, request)
web_1       |   File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
web_1       |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
web_1 …
Run Code Online (Sandbox Code Playgroud)

python django-models python-3.x django-3.0

3
推荐指数
1
解决办法
1542
查看次数

创建“压缩”字典

我有一个 python 字典,我想根据键压缩成一个不同的字典:

{'field1_0': 'FieldName1', 'field2_0': 'DataType1', 
    'field1_1': 'FieldName 2', 'field2_1': 'DataType2'}
Run Code Online (Sandbox Code Playgroud)

在这篇文章中我的钥匙是自动表单字段名称和它们由后“提供的数字分组_ ”: field1_0field2_0进行分组并且field1_1field2_1由于尾号进行分组。

我想将这些分组元素组合起来,并将它们压缩成一个键值对的字典,其中分组项目的每个值都在新的字典中。

例如,以上面的字典为例。我想要一个看起来像这样的字典:

{'FieldName1': 'DataType1', 'FieldName2': 'DataType2'}
Run Code Online (Sandbox Code Playgroud)

对于我正在做的事情的上下文:我有一些动态 Django 表单,允许用户在我的项目中创建自定义报告。为此,我有 1 个表单,允许他们输入所需字段数的数字。提交此表单时,动态表单会根据输入的元素数量创建 2 个字段(1 个用于字段名称,1 个用于数据类型,即'field1_{x}': 'field name''field2_{x}':'datatype')。我将提交这个创建我们正在讨论的 dict 的提交,并将其传递到一个不同的动态表单中,该表单根据字段名称和数据类型创建字段,然后中提琴您有可以根据 3rd 方声明创建的自定义表单。

python dictionary dictionary-comprehension

-2
推荐指数
1
解决办法
1122
查看次数