Python 德扬戈。将函数应用于queryset
我有一个查询集,我想将函数(port_to_app)应用到它的字段(dst_port)。然后从模板访问它。我该怎么做?我读过关于过滤器和标签的书,但不了解它们的工作方式 型号.py 视图.py home.htmlPython 德扬戈。将函数应用于queryset,python,django,django-models,django-templates,Python,Django,Django Models,Django Templates,我有一个查询集,我想将函数(port_to_app)应用到它的字段(dst_port)。然后从模板访问它。我该怎么做?我读过关于过滤器和标签的书,但不了解它们的工作方式 型号.py 视图.py home.html 您可以将is标记为属性 @property def port_app(self): "returns application instead of port using socket module" import socket if self.dst_port:
您可以将is标记为
属性
@property
def port_app(self):
"returns application instead of port using socket module"
import socket
if self.dst_port:
return socket.getservbyport(int(dst_port))
然后在模板中,您可以将其作为任何其他模型属性进行访问
{% for p in top_app %}
{{ p.port_app }}
{% endfor %}
模型对象上的
port\u to\u app
不可用,因为top\u app
使用.values
并因此返回DICT列表。请尝试将QuerySet调整为类似以下内容:
类流查询集(models.QuerySet):
def top_应用程序(自身):
导入套接字
对于自身值中的obj(“dst_端口”)\
.annotate(traffic=Sum('bytes')).order_by('-traffic')[:10]:
如果obj['dst_port']:
obj['dst_port']=socket.getservbyport(int(obj['dst_port']))
产量目标
此属性能否应用于queryset?
{% for p in top_app %}
{{ p.dst_port }}
{{ p.traffic | filesizeformat}}
{% endfor %}
@property
def port_app(self):
"returns application instead of port using socket module"
import socket
if self.dst_port:
return socket.getservbyport(int(dst_port))
{% for p in top_app %}
{{ p.port_app }}
{% endfor %}