我有以下观点:
views.py
def PackingListView(request):
if request.method == "POST":
form = PackingListForm(request.POST)
if form.is_valid():
if 'preview' in request.POST:
request.session['data'] = form.cleaned_data
return redirect('myview')
....
我想获取form
中的数据并将其传递到下一个视图,并设置与之相等的data
变量。以前这是可行的,但是一旦我在此表单中添加了外键,该会话便无法工作,因为它无法序列化。对我来说,最安全的方法是什么?
views.py
class myview(View):
def get(self, request, *args, **kwargs):
data = request.session.pop('data', {})#this won't work now
pdf = render_to_pdf('packlist_preview.html', data)
return HttpResponse(pdf, content_type='application/pdf')
如果需要也可以-这是myview
的URL
url(r'^myview/', views.myview.as_view(), name='myview'),
答案 0 :(得分:1)
如果将模型实例替换为其ID,则应该能够序列化数据。
QNode
然后在下一个视图中,您可以使用其ID从数据库中获取对象
data = form.cleaned_data
# remove object from data dict
related_object = data.pop('related_object')
# add in a reference
data['related_object_id'] = related_object.pk
# now you should be able to serialize object
request.session['data'] = data