要从另一个视图django打印项目列表吗
我有一个显示项目列表的视图要从另一个视图django打印项目列表吗,django,templates,list,views,Django,Templates,List,Views,我有一个显示项目列表的视图 def edit_order(request, order_no): try: status_list = models.Status.objects.all() order = models.Order.objects.get(pk = order_no) if order.is_storage: items = models.StorageItem.objects.filter(orderstoragelist__orde
def edit_order(request, order_no):
try:
status_list = models.Status.objects.all()
order = models.Order.objects.get(pk = order_no)
if order.is_storage:
items = models.StorageItem.objects.filter(orderstoragelist__order__pk = order.pk)
else:
items = models.StorageItem.objects.filter(orderservicelist__order__pk = order.pk)
except:
return HttpResponseNotFound()
我想把这些项目列表放到另一个视图中。不幸的是,事实证明这比我想象的要复杂得多
@login_required
def client_items(request, client_id = 0):
client = None
items = None
try:
client = models.Client.objects.get(pk = client_id)
items = client.storageitem_set.all()
item_list = models.StorageItem.objects.filter(orderstoragelist__order__pk = order.pk)
except:
return HttpResponse(reverse(return_clients))
return render_to_response('items.html', {'items':items, 'client':client, 'item_list':item_list}, context_instance = RequestContext(request))
我想也许我可以粘贴项目的定义,然后调用项目列表,但这不起作用。有什么想法吗
items.html
{% for item in item_list %}
{{item.tiptop_id}
{% endfor %}
根据您的评论:
我得到一个白色屏幕,屏幕上打印着url/在这种情况下,请使用tiptop/client 因为这就是你想要的:
except:
return HttpResponse(reverse(return_clients))
这意味着,如果上面有任何bug或问题,您的视图将只输出一个只包含该URL的响应。也许您打算使用HttpResponseRedirect
,因此浏览器实际上会重定向到URL-但您仍然不应该使用除之外的空白,因为它可以防止您看到实际出了什么问题
要回答主要问题,请考虑您的edit\u order
视图返回的内容:它为您提供了一个完整的HTML响应和一个呈现的模板。如何在另一个视图中的查询中将其用作元素?你需要有逻辑地思考这个问题
一个可能的解决方案是定义一个单独的函数,它只返回您想要的数据(作为普通查询集),两个视图都可以调用它。这是你想要的吗?不太清楚你想在这里做什么。状态列表已定义,但未在第一个示例中使用。相关吗?您最好添加一个管理器方法,这是向模型添加模型范围行为的常用方法……我在一个名为“编辑顺序”的视图中有一个项目列表。我想在客户端项目视图中显示相同的项目列表。仅此而已。您好,您在尝试在模板上呈现项目列表或类似内容时是否遇到错误?我看到一个白色屏幕,屏幕上打印有url/在这种情况下,是tiptop/client。在这种情况下,我们也可以查看您的模板吗?如果我知道如何执行此操作,我想这将是解决方案。对不起,我认为我无法进一步帮助您。如果您不知道如何定义函数并从中返回数据,那么您不应该询问有关StackOverflow的问题,您应该遵循基本的“编程简介”教程。