2

1 つの属性をチェックし、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] のリスト内包表記 [track.artists.all() 内のアーティストの artist.selling] は常に True を返します...

4

3 に答える 3

2

クエリを作成してください!ここを見る

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

クエリは 1 つだけ

于 2013-06-17T18:12:58.123 に答える