2009-11-09 10 views

risposta

2

Questo è uno di quei poteri della lingua modello Django non ti dà. Avete alcune opzioni:

  1. Calcolare questo valore nella vista e passarlo nel modello in una nuova variabile.

  2. Installare una libreria add-on di tag modello che consente di ottenere i confronti più ricchi, per esempio: http://www.djangosnippets.org/snippets/1350/

  3. Utilizzare un diverso linguaggio di template del tutto, se si pensa sarete spesso incorrere in limitazioni linguaggio di templating .

5

no. ma è possibile utilizzare django-annoying e {% if myarr|length > 1 %} funzionerà correttamente.

4

Triste, ma non esiste tale funzionalità nel tag "se" di django. C'è un rumors that smarter if tag will be added in 1.2., almeno è nella lista High priority.

In alternativa è possibile utilizzare "smart_if" tag from djangosnippets.com

O è possibile aggiungere il proprio filtro (stessa come filtro length_is) - ma è solo l'aggiunta più codice inutile :(

from django import template 
register = template.Library() 

def length_gt(value, arg): 
    """Returns a boolean of whether the value is greater than an argument.""" 
    try: 
     return len(value) > int(arg) 
    except (ValueError, TypeError): 
     return '' 
length_gt.is_safe = False 
register.filter(length_gt) 

Per maggiori informazioni consultare il django docs

0

Forse this sarà di aiuto?

Controllare le dimensioni della raccolta in Django i modelli sono piuttosto limitati. L'unica soluzione che stavo usando, stava passando un altro parametro da view a template - ma per essere onesti, se dipende da cosa stai cercando di ottenere.

56

A partire da Django 1.2; se supporta operazioni booleane e filtri, in modo da poter scrivere questo come:

{% if myarr|length > 1 %} 
<!-- printing some html here --> 
{% endif %} 

per se con filtri vedere il progetto Django documentation.

+0

Una cosa curiosa: in 1.6 se si utilizzano spazi come 'myarr | length', django lo stamperà, ma se si prova a confrontare, si ottiene un errore. Per confrontare, ho dovuto rimuovere gli spazi. – aldux

Problemi correlati