我有一個查詢集,我想將函數(port_to_app)應用於其字段(dst_port)。然後從模板訪問它。我怎麼做?我已閱讀過濾器和標籤,但無法理解他們的工作方式。Django。將函數應用於查詢集
models.py
class FlowQuerySets(models.QuerySet):
def top_app(self):
return self.values('dst_port')\
.annotate(traffic=Sum('bytes')).order_by('-traffic')[:10]
class Flow(models.Model):
id = models.BigIntegerField(primary_key = True)
ip_src = models.CharField(max_length=15)
ip_dst = models.CharField(max_length=15)
src_port = models.IntegerField()
dst_port = models.IntegerField()
objects = FlowQuerySets.as_manager()
def port_to_app(self):
"returns application instead of port using socket module"
import socket
if self.dst_port:
return socket.getservbyport(int(dst_port))
views.py
def top_conversations_app(request):
top_app = Flow.objects.top_app()
return render (request, 'flow/home.html', {'top_app': top_app})
home.html做爲
{% for p in top_app %}
{{ p.dst_port }}
{{ p.traffic | filesizeformat}}
{% endfor %}
謝謝!最後我設法做到了。 –