2017-07-18 2 views
0

1つの変数throuthテンプレートを別のテンプレートに渡したいと思います。 最初のテンプレート変数を特定して2番目のテンプレートに移動します。 2番目から、この変数を3番目のテンプレートに渡します。変数を次のテンプレートに渡す

valoare-するlist.html

{% for valoare in valoares %} 
    <a href="{% url 'valoare_detail' pk=valoare.pk %}"> 
      Contracte de valoare {{ valoare.tip_valoare }} 
    </a> 
{% endfor %} 

valoare-detail.html

<!-- This variable to be sent to the next template --> 
Valoare: {{ valoare.tip_valoare }} <br> 

{% for tip in tips %} 
     <a href="{% url 'contract_list' valoare=valoare.tip_valoare pk=tip.pk %}"> 
      Tip Contracte de {{ tip.tip_contract }} 
     </a> 
{% endfor %} 

契約するlist.html

Valoare: {{ valoare.tip_valoare }} <br> 
Tip Contract: {{ tip.tip_contract }} 

models.py

from django.db import models 


class Valoare(models.Model): 
    VALOARE_CHOICES = (
      ("MICA","mica"), 
      ("MARE","mare"), 
    ) 
    tip_valoare = models.CharField(max_length=4, choices=VALOARE_CHOICES, default="MICI") 
    file_name = models.FileField(null=True, blank=True) 

    def __str__(self): 
     return self.tip_valoare 


class Tip(models.Model): 
    TIP_CHOICES = (
      ("BUNURI","bunuri"), 
      ("SERVICII","servicii"), 
      ("LUCRARI","lucrari"), 
    ) 
    tip_contract = models.CharField(max_length=8, choices=TIP_CHOICES, default="BUNURI") 
    file_name = models.FileField(null=True, blank=True) 

    def __str__(self): 
     return self.tip_contract 

views.py

from django.shortcuts import render, get_object_or_404 
from .models import Valoare, Tip 


def valoare_list(request): 
    valoares = Valoare.objects.all 
    return render(request, 'contracte/valoare_list.html', {'valoares': valoares}) 

def valoare_detail(request, pk): 
    valoare = get_object_or_404(Valoare, pk=pk) 
    tips = Tip.objects.all 
    return render(request, 'contracte/valoare_detail.html', {'valoare': valoare, 'tips': tips}) 

def contract_list(request, valoare, pk): 
    (?????) 
    tip = get_object_or_404(Tip, pk=pk) 
    return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip}) 

urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.valoare_list, name='valoare_list'), 
    url(r'^valoare/(?P<pk>\d+)/$', views.valoare_detail, name='valoare_detail'), 
    url(r'^contract/(?P<valoare>[a-z]{4})/(?P<pk>\d+)/$', views.contract_list, name='contract_list'), 
] 

答えて

0

あなたはこの貫通tip_valoare渡しているので:<a href="{% url 'contract_list' valoare=valoare.tip_valoare pk=tip.pk %}">を、その後、URL url(r'^contract/(?P<valoare>[a-z]{4})/(?P<pk>\d+)/$', ...)内部valoare値は、tip_valoare(4小文字になります大文字と小文字)。

その後、あなたは(contract_listビュー内の)このようなvaloareオブジェクトを取得することができます

def contract_list(request, valoare, pk): 
    # (?????) - valoare is actually the tip_valoare 
    valoare = get_object_or_404(Valoare, tip_valoare=valoare) 
    tip = get_object_or_404(Tip, pk=pk) 
    return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip}) 
+0

パーフェクトを、それが動作します。どうもありがとう。 – Mircea

関連する問題