Ho un campo modello, che memorizza un elenco di URL (sì, lo so, è il modo sbagliato) come url1\nurl2\nurl3<...>
. Ho bisogno di dividere il campo in un array nel mio modello, così ho creato il filtro personalizzato:Modelli Django - stringa divisa per array
@register.filter(name='split')
def split(value, arg):
return value.split(arg)
Io lo uso in questo modo:
{% with game.screenshots|split:"\n" as screens %}
{% for screen in screens %}
{{ screen }}<br>
{% endfor %}
{% endwith %}
ma come posso vedere, non lo fa spaccatura voglio lavorare: ottengo output come url1 url2 url3
(con interruzioni di riga se guardo la fonte). Perché?
Questo ha molto più senso. Mi hai salvato da molte cose sbagliate. –
Tenete a mente, però, che i modelli eccessivamente grassi possono diventare una pila di cose non mantenibili. Questo caso specifico è valido: convertirai alcuni dati serializzati in Python, cosa che è sensata fare sul livello del modello. (Puoi anche rendere quel metodo una proprietà calcolata.) Tuttavia, se vuoi mettere un metodo sul tuo modello * solo * in modo che tu possa chiamarlo dal tuo modello, pensaci due volte, forse sarebbe OK farlo quel tipo di elaborazione nella vista (i) :) – Tony
meglio dei tag modello se il contenuto proviene dai modelli. Modello – WeizhongTu