【发布时间】:2016-04-28 01:16:29
【问题描述】:
我有一个查询集,我想将函数 (port_to_app) 应用到它的字段 (dst_port)。然后从模板访问它。我怎么做?我读过过滤器和标签,但无法理解它们的工作方式。
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 %}
【问题讨论】:
标签: python django django-models django-templates