2015-01-19 4 views
0

У меня есть следующий код представления, который добавляет некоторые временные данные к экземпляру модели Django, содержащемуся в отношениях ManyToMany. Я хотел бы иметь доступ к этим данным в шаблоне, но я не уверен, как это сделать.Доступ к данным временной модели в шаблоне django?

@login_required() 
def shopping_cart(request): 
    try: 
     cart = ShoppingCart.objects.get(user__exact=request.user) 
    except ShoppingCart.DoesNotExist: 
     cart = ShoppingCart(user=request.user) 
     cart.save() 

    for album in cart.albums.all(): 
     album.vat_rate = request.session['vat_rate'] 
     album.total_cost = (((album.price/100) * album.vat_rate) + album.price) 

    return render_to_response('sym_money/shopping_cart.html', 
          {'shopping_cart': cart}, 
          context_instance=RequestContext(request)) 

Мне нужно, чтобы иметь возможность получить доступ к VAT_RATE и Total_Cost в шаблоне, выполнив:

{% for album in cart.albums.all %} 
    {{ album.vat_rate }} 
    {{ album.total_cost }} 
{% endfor %} 

Ни в одном из временных данных не имеет каких-либо полей в модели, и я не хочу сохранить его в базу данных либо, я просто хочу иметь возможность получить доступ к временным данным в модели из шаблонов.

ответ

3

В шаблоне, когда вы делаете {% for album in cart.albums.all %}, вы создаете совершенно новый запрос, чтобы ваши предыдущие аннотированные объекты были отброшены.

Сохраните запрос на выбор альбома как переменную в своем представлении, повторите его и анонимьте объекты, как вы делаете, затем передайте эту переменную в контекст.

Подсказка: render_to_response - старыйskool - просто используйте render.