Хотите распечатать список предметов из другого представления django - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть вид, который отображает элементы списка.

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))

Я подумал, что, может быть, я могу просто вставить определение элементов и просто вызвать этот item_list, но это не работает. Любые идеи

items.html

{% for item in item_list %}
    {{item.tiptop_id}
{% endfor %}

1 Ответ

0 голосов
/ 08 февраля 2011

Из вашего комментария:

У меня белый экран с напечатанным на нем URL./ tiptop / client в этом случае.

Поскольку это то, что вы просили:

except:
    return HttpResponse(reverse(return_clients))

Это означает, что если в приведенном выше описании есть какие-либо ошибки или проблемы, ваше представление просто выведет ответ, содержащий толькоэтот URL.Возможно, вы хотели использовать HttpResponseRedirect, поэтому браузер фактически перенаправляет на URL-адрес, но все же не следует использовать пустой except, поскольку он не позволяет вам увидеть, что на самом деле идет не так.

Для ответаглавный вопрос, подумайте о том, что возвращает ваше представление edit_order: оно дает вам полный HTML-ответ с визуализированным шаблоном.Как вы могли бы использовать это как элемент в запросе в другом представлении?Вы должны подумать об этом логически.

Одним из возможных решений было бы определение отдельной функции, которая просто возвращает нужные вам данные - в виде простого набора запросов - и оба представления могут вызывать его.Делает ли это то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...