【问题标题】:Django template two ifequal in chainDjango模板两个ifequal in chain
【发布时间】:2017-12-29 06:02:27
【问题描述】:

我的问题出在带有 ifequal 链的最后一个模板中。 在最后一个模板中,我必须根据从两个模板中识别的两个参数从模型合同中进行选择。我认为 ifequal 链的代码语法有问题。每个 ifequal 分开也不行。我感觉自己就像在墙里。

1.模板:valoare_list.html

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

2。模板:valoare_detail.html

 {% for tip in tips %}
       <a href="{% url 'contract_list' valoare=valoare.tip_valoare tip=tip.tip_contract %}">
           Tip Contracte de {{ tip.tip_contract }}
       </a><br>
 {% endfor %}
  1. 模板:contract_list.html

    {{ valoare.tip_valoare }} <br> 
    {{ tip.tip_contract }} <br> <br>
    
    {% for contract in contracts %}
        {% ifequal contract.valoare valoare.tip_valoare %}
            {% ifequal contract.tip tip.tip_contract %}
                 {{ contract }} <br>
            {% endifequal %}
        {% endifequal %}
    {% endfor %}
    

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", verbose_name='valoarea contractului')
     file_name = models.FileField(null=True, blank=True, upload_to='contracte/templates/contracte/img/', verbose_name='img path')

     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", verbose_name='tipul contractului')
      file_name = models.FileField(null=True, blank=True, upload_to='contracte/templates/contracte/img/', verbose_name='img path')

    def __str__(self):
         return self.tip_contract


 class Contract(models.Model):
     valoare = models.ForeignKey('Valoare')
     tip = models.ForeignKey('Tip')
     data = models.DateField(blank=True, null=True)
     file_name = models.FileField(null=True, blank=True, upload_to='pdf/', verbose_name='contract file name')

     def __str__(self):
         return str(self.data)

     class Meta:
         ordering = ["data"]

views.py

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


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


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


 def contract_list(request, valoare, tip):
     valoare = get_object_or_404(Valoare, tip_valoare=valoare)
     tip = get_object_or_404(Tip, tip_contract=tip)
     contracts = Contract.objects.all()
     return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip, 'contracts':contracts})

urls.py

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


 urlpatterns = [
     url(r'^$', views.valoare_list, name='valoare_list'),
     url(r'^valoare/(?P<valoare>[A-Z]{4})/$', views.valoare_detail, name='valoare_detail'),
     url(r'^valoare/(?P<valoare>[A-Z]{4})/(?P<tip>[A-Z]+)/$', views.contract_list, name='contract_list'),
 ]

我不明白 - 为什么 ifequal 在模板 nr.3 中不起作用?

【问题讨论】:

    标签: django python-3.x django-templates


    【解决方案1】:

    我在

    中管理的最后一个选择

    views.py

     def contract_list(request, valoare, tip):
         valoare = get_object_or_404(Valoare, tip_valoare=valoare)
         tip = get_object_or_404(Tip, tip_contract=tip)
         finals = Contract.objects.filter(valoare__tip_valoare=valoare, tip__tip_contract=tip)
         return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip, 'finals':finals})
    

    contract_list.html - 第三个模板是:

     {% for final in finals %}
             {{ final }}<br>
     {% endfor %}
    

    在 finals 变量中,我放置了“双参数”过滤器,QUERY 完美运行。我是一个初学者,我觉得自己打开了世界。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 2010-10-01
      • 2011-11-22
      • 2013-11-29
      • 2012-02-23
      • 2010-11-07
      • 1970-01-01
      • 2015-04-09
      • 2014-02-03
      相关资源
      最近更新 更多