0の罠

    def check_turn_end(self):
        "全員伏せカードを出したのを確認して、ターンを終了させる"
        seats = self.seat_set.fetch(3)
        if all(s.closed_card for s in seats):

ごめん、今回カードにモデルを割り当てないで0〜51の整数で表現するようにしたんだ…。0ってFalse相当だよね…。

        if all(s.closed_card != None for s in seats):

こうだね。