Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 德扬戈。将函数应用于queryset_Python_Django_Django Models_Django Templates - Fatal编程技术网

Python 德扬戈。将函数应用于queryset

Python 德扬戈。将函数应用于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:

我有一个查询集,我想将函数(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:
        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 %}