[Python] sistema di template django, chiamando una funzione all'interno di un modello



Answers

Se il metodo non richiede argomenti, puoi utilizzare @ decor natrice e accedervi normalmente nel modello.

class ChannelStatus(models.Model):
    ...
    @property
    def function_you_want_as_property(self):
        mystring = ""
        ...
Question

Voglio chiamare una funzione dal mio modello in un modello come:

class ChannelStatus(models.Model):
 ..............................
 ..............................

    def get_related_deltas(self,epk):
        mystring = ""
        if not self.get_error_code_delta(epk):
            return mystring
        else:
            for i in self.get_listof_outage():
                item = i.error_code.all()
                for x in item:
                    if epk == x.id:
                        mystring= mystring +" "+str(i.delta())
        return mystring         

E quando voglio chiamare questo dal modello: supponiamo durante il rendering, passo a channel_status_list come

channel_status_list = ChannelStatus.objects.all()

{% for i in channel_status_list %}
  {{ i.get_related_deltas(3) }}
{% endfor %}

Questo non funziona, sono in grado di chiamare una funzione che non consuma nulla, ma non ho trovato cosa fare se ha parametri

Saluti




Per argomento> 1, usa tag semplici :

@register.simple_tag
def related_deltas(obj, epk, second_arg):
    return obj.get_related_deltas(epk, second_arg)

Modello:

{% for i in channel_status_list %}
  {% related_deltas i 3 4 %}
{% endfor %}

(Nota la modifica della sintassi da {{ a {% )

Può assumere parametri posizionali (ad es. related_deltas i 3 second_arg=4 debug=true ).




Links