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