python - Django 优化方法中的循环

标签 python django

我编写了检查一个属性的方法,如果有一位艺术家的 selling=False 则返回 False,否则返回 True。

def check_selling(track, excludes):
    """
    Returns True if all track's artists are allowed for selling. False otherwise
    """
    for artist in track.artists.all():
            if not artist.selling:
                excludes.append(track.pk)
                return False
    return True

我怎样才能最大限度地减少这种情况?

我试过:

def check_selling(track, excludes):
    res = excludes.append(track.pk) if not [artist.selling for artist in track.artists.all()] else True
    return res or False

但是 [False] 或 [True] 导致列表理解 [artist.selling for artist in track.artists.all()] 总是给出 True...

最佳答案

进行查询! 参见 Here

def check_selling(track, excludes):
    """
    Returns True if all track's artists are allowed for selling. False otherwise
    """
    if track.artists.filter(selling=False).exists(): #If "selling" is a boolean
        excludes.append(track)
        return False
    return True

只有一个查询

关于python - Django 优化方法中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153775/

相关文章:

python - 如何对具有相同键的行求和?

python - 从全局环境中的函数内部使用 exec 定义函数

python - 基于多种模型的Django Form

javascript - 在 Django 中将页面下载为 JSON

python - Django settings.py 未更新

python - mac osx 10.10.2 无法升级python 六包

python - 我如何选择 pandas 中时间范围的数据

python - Pandas DataFrame 填充列中的缺失值

python - 指示输入类型的 Django 表单

django - 如何让用户在Django中的同一列输入多语言文本数据?