Python Django操作错误:解析器堆栈溢出

Python Django操作错误:解析器堆栈溢出,python,sql,django,Python,Sql,Django,我的项目中有一个会计应用程序的多页表单。第一个页面允许用户选择多个债权人,第二个页面允许用户选择多个债务人,第三个页面生成一个表,以便用户可以向每个债权人输入每个债务人的信用 表单的每一页都使用相关帐户的UUID通过POST将所选数据传递到下一页,最后一页有一个submit按钮,该按钮实际在数据库中生成事务对象 当我在选择了大量债务人或债权人的情况下使用表单时,会出现一个操作错误:解析器堆栈溢出 从关于这个主题的另一个问题中,我发现我需要找到一种更精简的传输数据的方法,可能是在数据库中创建一个中

我的项目中有一个会计应用程序的多页表单。第一个页面允许用户选择多个债权人,第二个页面允许用户选择多个债务人,第三个页面生成一个表,以便用户可以向每个债权人输入每个债务人的信用

表单的每一页都使用相关帐户的UUID通过POST将所选数据传递到下一页,最后一页有一个submit按钮,该按钮实际在数据库中生成事务对象

当我在选择了大量债务人或债权人的情况下使用表单时,会出现一个操作错误:解析器堆栈溢出

从关于这个主题的另一个问题中,我发现我需要找到一种更精简的传输数据的方法,可能是在数据库中创建一个中间模型来保存每个页面的数据,这样每个页面只需要传递一个对象。但是,正如您从下面的错误中看到的,是帐户列表导致了溢出。此列表来自查询:

Account.objects.all().order_by('type')
所以我不确定这是否能解决问题

或者,我可以增加SQL解析器堆栈的大小。但是,我无法在主机系统上重新编译sqlite,因为它使用虚拟主机,而且我不是系统管理员

有什么建议吗

django调试页面中的本地vars数据如下:

__class__   

<class 'Bank.views.CreateTransactionData'>

account     

<Account: (User) User Z>

account_list    

Error in formatting: OperationalError: parser stack overflow

all_accounts    

<QuerySet [<Account: (User) User A>, <Account: (User) User B>, <Account: (User) User C>, <Account: (User) User D>, <Account: (User) User E>, <Account: (User) User F>, <Account: (User) User G>, <Account: (User) User H>, <Account: (User) User I>, <Account: (User) User J>, <Account: (User) User K>, <Account: (User) User L>, <Account: (User) User M>, <Account: (User) User N>, <Account: (User) User O>, <Account: (User) User P>, <Account: (User) User Q>, <Account: (User) User R>, <Account: (User) User S>, <Account: (User) User T>, '...(remaining elements truncated)...']>

args    

()

creditor    

<Account: (User) User A>

data    

{'0497dfe8-37c5-4939-8dd9-b9c8093d0ae1': 'TRUE',
 '07dbb8d3-cc1f-497f-ab3b-4a5d815cac3a': 'TRUE',
 '0957bfcd-7c16-4559-8e23-57a057c36155': 'TRUE',
 '26fed283-450b-4fe3-8ac6-84dadd67e950': 'TRUE',
 '3129ffe8-0ece-4576-afed-00eeb789ad80': 'TRUE',
 '517ca471-bf9a-40c6-9988-b773da21d30d': 'TRUE',
 '51f4a86f-b5d8-4910-b338-b461c544016d': 'TRUE',
 '5706826c-c895-4063-823f-2d98fdb012ff': 'TRUE',
 '57baa54a-670a-4310-baf3-5bd0023f96a4': 'TRUE',
 '61b91670-5424-4625-a964-8dd257524ee4': 'TRUE',
 '6ae151ff-4e5d-4972-b6a5-16efd819c53b': 'TRUE',
 '6cfecce8-95b2-468c-80d6-b52af2ed2037': 'TRUE',
 '714c8d14-bc4d-47ad-9fae-88366064ade8': 'TRUE',
 '79168ba9-f187-404f-968a-c9224d570d3b': 'TRUE',
 '9d47c7dc-cf6c-4090-a40b-f7c85eaccc37': 'TRUE',
 '9fd1e279-1b70-4ef1-8b79-98ba3d668542': 'TRUE',
 'a1a11ebe-b5d5-49bf-a60f-4f33dafdc5a7': 'TRUE',
 'a5909c0b-d991-4b0e-bb58-ccef7dbdf32f': 'TRUE',
 'a8d74160-50bd-48ce-9862-ba48be6a4619': 'TRUE',
 'b66ed030-d40b-413e-83ec-47082d3281c9': 'TRUE',
 'ca50f233-8118-4e1f-a951-c6a38bd3f285': 'TRUE',
 'creditor': 'a8d74160-50bd-48ce-9862-ba48be6a4619',
 'csrfmiddlewaretoken': 'DwbBCOSdTpV2HhZYgCodQBpF3Ut167EAUfVc8f8AOA04PKTVI4vyn1crFwpSfTGd',
 'd3040f2c-edd1-4466-878e-23aaed0e35e3': 'TRUE',
 'd660841d-1268-4a6a-8b30-5d9cc8157989': 'TRUE',
 'date': '2019-08-29',
 'e4032076-98a7-4a4b-bfc4-d7d599056a77': 'TRUE',
 'ee6880aa-dc23-4827-8598-c6a67766af61': 'TRUE',
 'f0182a4c-c221-45d1-95ac-dd2012111402': 'TRUE'}

date    

datetime.datetime(2019, 8, 29, 0, 0)

key     

UUID('714c8d14-bc4d-47ad-9fae-88366064ade8')

kwargs  

{}

request     

<WSGIRequest: POST '/Bank/Transaction/Create/Data/'>

self    

<Bank.views.CreateTransactionData object at 0x053836D0>
整理好了

对于其他遇到此问题的人,问题在于我提取所选帐户列表的方式

我有:

摘录债务人名单 all_accounts=Account.objects.all account\u list=account.objects.none 对于所有账户中的账户: key=account.account\u key 如果data.keys和data.getstrkey中的strkey=='TRUE': 帐户列表=帐户列表。联合所有帐户。筛选器帐户密钥=密钥 如果不是帐户列表。首先:检查是否未选择任何债务人 提起Http404“你的交易中必须有债务人。”抱怨 它为您选择的每个帐户创建了一个新查询

将其更改为:

摘录债务人名单 all_accounts=Account.objects.all.order_按“类型” 账户清单=[] 对于所有账户中的账户: key=account.account\u key 如果data.keys和data.getstrkey中的strkey=='TRUE': account\u list.appendaccount 如果不是帐户列表:检查是否未选择任何债务人 提起Http404“你的交易中必须有债务人。”抱怨 这个故事的寓意是:小心使用。联合方法。。。在你尝试从头开始建立一个会计系统之前,也许会参加一些CS讲座