python - 不是 JSON 可序列化的 Django 会话
问题描述
在我的 django 视图中,我有以下内容:
manifestData = form2.cleaned_data
form2
是一个表单集,其中包含动态数量的表单。因此,在一种情况下,它可能只有一种形式,但在另一种情况下,它可能有 3 个或 5 个等。例如,如果它包含 2 个形式并且我执行,print(manifestData)
我将得到输出:
[{'ProductCode': <Product: APPLES-1>, 'UnitQty': u'11', 'Price': u'11.00', 'Amount': u'121', 'DescriptionOfGoods': u'Washington Extra Fancy', 'Type': u'Cases', u'id': None, u'DELETE': False}, {'ProductCode': <Product: ORANGES-1>, 'UnitQty': u'1', 'Price': u'12.00', 'Amount': u'12', 'DescriptionOfGoods': u'SUNKIST ORANGES', 'Type': u'Cases', u'id': None, u'DELETE': False}]
接下来,在我看来,我试图manifestData
通过会话将其传递给另一个视图,如下所示:
def quoteView(request):
...
request.session['manifestData'] = x
return redirect('QuotePreview')
class QuotePreview(View):
def get(self, request, *args, **kwargs):
manifestData = request.session.pop('x', {})
...
但是,我在此行收到一个错误,request.session['manifestData'] = x
其中提到“APPLES-1 不是 JSON 可序列化”。我相信这是因为这是对产品模型的外键引用。
class Product(models.Model):
ProductCode = models.CharField(max_length=100)
HSCode = models.CharField(max_length=50, null=True)
DescriptionOfGoods = models.CharField(max_length=100)
Price = models.CharField(max_length=100)
UnitType = models.CharField(max_length=100)
def __str__(self):
return str(self.ProductCode)
问题主要是 - 我怎样才能使这些产品代码 JSON 可序列化,以便它们可以在会话中使用?感谢:D
解决方案
推荐阅读
- octave - 在 Octave 上更改默认编辑器会出现错误消息
- javascript - 渲染后如何执行除“setTimeout()”之外的函数
- sql - 规范化,根据问题正确引用
- python - 如何在 Django 表单中进行密码和确认密码验证
- php - 尝试使用 PHP 从 Instagram 获取提要
- jenkins - Jenkins 中的 zip 工件
- php - 从一定数量的 Laravel 中取值
- android - 如何在 GoogleMap 的某个地图位置放置视图?
- java - 如何在 Intellij 中优雅地关闭 gradle/设置 java 应用程序的 java 选项
- python - 运行一段时间时出现Python线程内存错误