python - 有没有更好的方法将此 Python/Django 代码格式化为有效的 PEP8?

标签 python django pep8

我用两种方式编写了代码,并且我发现它们都存在缺陷。是否有另一种方法可以写这个或者一种方法比另一种更“正确”?

def functionOne(subscriber):
    try:
        results = MyModelObject.objects.filter(
            project__id=1,
            status=MyModelObject.STATUS.accepted,
            subscriber=subscriber).values_list(
                'project_id',
                flat=True).order_by('-created_on')
    except:
        pass
def functionOne(subscriber):
    try:
        results = MyModelObject.objects.filter(
            project__id=1,
            status=MyModelObject.STATUS.accepted,
            subscriber=subscriber)
        results = results.values_list('project_id', flat=True)
        results = results.order_by('-created_on')
    except:
        pass

这是有效的代码,这不是正确的代码,我撕碎了类似的代码块来给出objects.filter部分的示例。请不要浪费时间评论代码的其他部分。我将 try/except 放在那里以强制缩进以将某些元素插入新行(80 列)

最佳答案

我会这样做:

def functionOne(subscriber):
    try:
        results = MyModelObject.objects.filter(
            project__id=1,
            status=MyModelObject.STATUS.accepted,
            subscriber=subscriber
        ).values_list(
           'project_id',
           flat=True
        ).order_by(
            '-created_on'
        )
    except:
        pass

使用缩进使层次结构更具可读性。然而,这段代码并不是特别好。直接在 View 中使用这样的代码应该被视为反模式。对于此类重复代码,模型Manager可能是更好的选择。

您可能想阅读http://dabapps.com/blog/higher-level-query-api-django-orm/

关于python - 有没有更好的方法将此 Python/Django 代码格式化为有效的 PEP8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100163/

相关文章:

python - 将变量值连接到非字符串代码行

python - .shape[] 在 "for i in range(Y.shape[0])"中做了什么?

python - 我应该如何使用独特的 slug 测试 Django View

python - "E721: do not compare types, use isinstance()"错误

python - 在pycharm中配置pep8.py命令行选项

python - 延长线与另一条线平滑连接

python - 如何将 EMR 流作业的输出写入 HDFS?

python - 处理 Django 上传文件中的 UTF-16

python - 使用 Django + nginx 以字节范围请求流式传输音乐

python - 导入行 : E501 line too long 中的 PEP8 错误